我之前发布了一个关于DI的问题,此后我发现了同样的问题。我不知道我在做什么或我的开发设置?
我试图将Router注入组件。我的包含模块看起来像这样
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { Router } from '@angular/router';
import { LoginComponent } from './login.component';
import { User } from '../user/user';
@NgModule({
imports: [ BrowserModule, FormsModule, Router ],
declarations: [ LoginComponent ],
bootstrap: [ LoginComponent ]
})
export class LoginModule { }
这是我的组件
import { Component } from '@angular/core';
import { Inject } from '@angular/core';
import { Router } from '@angular/router';
import { User } from '../user/user';
@Component({
templateUrl: './login.template.html'
})
export class LoginComponent {
user = new User( "", "" );
submitted:boolean = false;
inProgress:boolean = false;
constructor ( private router : Router ) {
}
}
当我运行应用程序时,我收到以下错误
Can't resolve all parameters for LoginComponent
我的构建过程如下:
运行inline-angular-compiler(在实际的js文件中嵌入templateUrl) 运行tsc(从ts转换为js)
我听说运行打字稿转换器会导致DI问题但是替代方案是什么?
编辑:
我的路由器设置
import { Routes, RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { UserRoutes } from './user/user.routing';
import { DashboardRoutes } from './dashboard/dashboard.routing';
import { LoginRoutes } from './login/login.routing';
const routes: Routes = [
...UserRoutes,
...DashboardRoutes,
...LoginRoutes,
//this needs to redirect to a homepage
{path:'', component: DashboardComponent}
];
export const appRoutingProviders: any[] = [
];
export const routing = RouterModule.forRoot( routes );
答案 0 :(得分:0)
好的,所以我做了一些阅读,结果发现一些打字稿编译器不像Angular推荐的那样处理Angular DI。我之前一直在使用自己的构建过程,该过程使用了不同类型的脚本编译器。
解决方案是将构建过程恢复为使用angular建议的过程。一个非常奇怪的问题和难以诊断的问题。
感谢大家的帮助。