第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Angular 2中創(chuàng)建單件服務?

如何在Angular 2中創(chuàng)建單件服務?

HUX布斯 2019-08-06 17:26:42
如何在Angular 2中創(chuàng)建單件服務?我已經讀過,當引導應該讓所有孩子共享同一個實例時注入,但我的主要和頭部組件(主應用程序包括頭部件和路由器出口)都獲得了我的服務的單獨實例。我有一個FacebookService,用于調用facebook javascript api和一個使用FacebookService的UserService。這是我的引導程序:bootstrap(MainAppComponent, [ROUTER_PROVIDERS, UserService, FacebookService]);從我的日志記錄看起來,引導調用結束,然后我看到FacebookService然后在每個構造函數(shù)運行的代碼,MainAppComponent,HeaderComponent和DefaultComponent之前創(chuàng)建UserService:
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

它是由依賴注入的工作方式引起的。它基于分層注入器。

Angular2應用程序中有幾個注入器:

  • 引導應用程序時配置的根目錄

  • 每個組件的注射器。如果您在另一個組件內使用組件。組件注入器是父組件1的子組件。應用程序組件(在您提升應用程序時指定的組件)將根注入器作為父注入器)。

當Angular2嘗試在組件構造函數(shù)中注入某些內容時:

  • 它會查看與組件關聯(lián)的進樣器。如果有匹配的,它將使用它來獲取相應的實例。這個實例是懶惰創(chuàng)建的,是這個注入器的單例。

  • 如果此級別沒有提供者,它將查看父級注入器(依此類推)。

因此,如果您希望為整個應用程序提供單例,則需要在根注入器級別或應用程序組件注入器上定義提供程序。

但Angular2將從底部查看注入器樹。這意味著將使用最低級別的提供程序,并且關聯(lián)實例的范圍將是此級別。

有關詳細信息,請參閱此問題:


查看完整回答
反對 回復 2019-08-06
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

我知道棱鏡有分層注射器,如蒂埃里所說。

但是我在這里有另一種選擇,以防你發(fā)現(xiàn)一個用例,你真的不想在父母那里注入它。

我們可以通過創(chuàng)建服務實例來實現(xiàn)這一點,并且提供始終返回的服務。

import { provide, Injectable } from '@angular/core';import { Http } from '@angular/core'; //Dummy example of dependencies@Injectable()export class YourService {
  private static instance: YourService = null;

  // Return the instance of the service
  public static getInstance(http: Http): YourService {
    if (YourService.instance === null) {
       YourService.instance = new YourService(http);
    }
    return YourService.instance;
  }

  constructor(private http: Http) {}}export const YOUR_SERVICE_PROVIDER = [
  provide(YourService, {
    deps: [Http],
    useFactory: (http: Http): YourService => {
      return YourService.getInstance(http);
    }
  })];

然后在您的組件上使用自定義提供方法。

@Component({
  providers: [YOUR_SERVICE_PROVIDER]})

你應該有一個單獨的服務,而不依賴于分層注入器。

我不是說這是一種更好的方法,以防萬一有人出現(xiàn)無法進行分層注射器的問題。


查看完整回答
反對 回復 2019-08-06
  • 3 回答
  • 0 關注
  • 598 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號