![](/img/trans.png)
[英]Cannot inject HttpClient in an AngularJS/Angular hybrid app upgraded with ngUpgrade. Getting "NullInjectorError: No provider for http_HttpClient!"
[英]Inject a provider to root injector in angular 1 angular 2 hybrid app
我正在開發混合ng1 ng2應用。 該應用程序基於ng1,然后使用升級適配器降級ng2組件。
我想在所有ng2組件之間共享一個ng2提供程序(用於獲取和存儲數據的服務)之一的單個實例,但是這些組件不共享一個公共的ng2父組件,因此每個組件都有一個新的提供者的實例。
有沒有一種方法可以使這些組件共享一個提供者實例,而無需使用父ng2組件?
編輯 : 答案已經過時,因為rc5版本,您應該為此使用NgModule。
只需使用addProvider
的方法UpgradeAdapter
。
像這樣:
import { UpgradeAdapter } from '@angular/upgrade';
import { YourService} from "./YourService";
const upgradeAdapter = new UpgradeAdapter();
upgradeAdapter.addProvider(YourService);
此之后,將YourService
添加到根注入器,而無需在其他組件或服務中指定它:
@Component({
selector: 'cmp-selector',
template: '...',
// Don't specify YourService again or you will receive another instance
// providers: [YourService]
})
export class SomeComponent {
constructor(private service: YourService) {}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.