angular - 没有 TypeScript 的 Angular 8 依赖注入?
问题描述
我目前正在关注将 AngularJS (1.5.x) 应用程序迁移到 AngularJS / Angular 8 混合的教程。我们已经决定暂时不使用 TypeScript,而是坚持使用 Babel 进行 JavaScript 转译。如果没有 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;
}
推荐阅读
- node.js - Express.js 如何安全地检索请求 IP?
- php - 使用中间表定义一对一关系以避免外键循环的雄辩方式
- javascript - 使用多个 OnEdit
- python - 无法捕获 InvalidFileException
- php - OpenCart 错误未捕获错误:类“Controllerextensiontotalaffiliate”
- java - java spring中的webapplication文件夹名称是否必须是webapp?
- java - 为什么当 Consumer 只接受一个参数时,forEach 方法接受调用具有多个参数的方法的 lambda?
- flutter - 从 Flutter 中的 API 获取数据后如何导航到新屏幕?
- ios - 现在如何在 RealmSwift 4.0 更新中使用枚举?
- python - 使用 BeautifulSoup 从网页中提取文本和图像