Angular 8 没有 TypeScript 的依赖注入?
Angular 8 Dependency Injection Without TypeScript?
我目前正在学习将 AngularJS (1.5.x) 应用程序迁移到 AngularJS / Angular 8 混合体的教程。我们已经决定暂时不使用 TypeScript,而是坚持 JavaScript 使用 Babel 转译。在没有 TypeScript 的 Angular 中,我似乎找不到任何关于依赖注入的信息。
app.module.js
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';
import AppComponent from './app.component';
import angularJsModule from '../app/scripts/app';
@NgModule({
imports: [
BrowserModule,
UpgradeModule
]
})
export default class AppModule {
constructor(upgrade) {
console.log('angular 8 plz?');
}
ngDoBootstrap() {
this.upgrade.bootstrap(document.body, [angularJsModule.name], { strictDi: true });
}
}
在 运行 申请后,我收到 未捕获错误:无法解析 AppModule 的所有参数:(?)。
我猜这是因为缺少 TypeScript 而没有注入 UpgradeModule?
https://angular.io/guide/dependency-injection#dependency-injection-tokens
我试过在构造函数中设置 this.upgrade = upgrade
,但从未实现,因为 Angular 不知道 upgrade
是什么。
有没有不用 TypeScript 来注入 UpgradeModule 的方法?
或者我遇到的错误是因为其他原因?
你必须使用Inject
导入:
import { NgModule, Inject } from '@angular/core';
更改构造函数:
constructor(@Inject(UpgradeModule) upgrade) {
this.upgrade = upgrade;
}
我目前正在学习将 AngularJS (1.5.x) 应用程序迁移到 AngularJS / Angular 8 混合体的教程。我们已经决定暂时不使用 TypeScript,而是坚持 JavaScript 使用 Babel 转译。在没有 TypeScript 的 Angular 中,我似乎找不到任何关于依赖注入的信息。
app.module.js
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';
import AppComponent from './app.component';
import angularJsModule from '../app/scripts/app';
@NgModule({
imports: [
BrowserModule,
UpgradeModule
]
})
export default class AppModule {
constructor(upgrade) {
console.log('angular 8 plz?');
}
ngDoBootstrap() {
this.upgrade.bootstrap(document.body, [angularJsModule.name], { strictDi: true });
}
}
在 运行 申请后,我收到 未捕获错误:无法解析 AppModule 的所有参数:(?)。
我猜这是因为缺少 TypeScript 而没有注入 UpgradeModule? https://angular.io/guide/dependency-injection#dependency-injection-tokens
我试过在构造函数中设置 this.upgrade = upgrade
,但从未实现,因为 Angular 不知道 upgrade
是什么。
有没有不用 TypeScript 来注入 UpgradeModule 的方法?
或者我遇到的错误是因为其他原因?
你必须使用Inject
导入:
import { NgModule, Inject } from '@angular/core';
更改构造函数:
constructor(@Inject(UpgradeModule) upgrade) {
this.upgrade = upgrade;
}