不完全知道它是否有所不同,但是我手动创建了我的角度项目,没有使用角度CLI,并且我正在使用Visual Studio 2017和打字稿。
当前,我浏览了角度指南(angular.io)的Heroes教程,并以“依赖项注入”主题停了下来。当我(手动)创建Hero Service时,出现一个打字稿错误,告诉我所提供的Injectable注释参数与所需的类型实参不匹配。可以编译,但在运行时出现以下错误:
无法解析HeroesComponent的所有参数:(?)。
这就是我所做的:
英雄服务:
import { Injectable } from '@angular/core';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
@Injectable({
providedIn: 'root', }) export class HeroService {
constructor() { }
getHeroes(): Hero[] {
return HEROES;
}
}
这是我使用服务的方式:
import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';
import { HEROES } from '../mock-heroes';
import { HeroService } from '../hero-service';
@Component({
selector: 'app-heroes',
templateUrl: '/App/HeroesComponentTemplate',
styleUrls: ['../../../dist/styles/heroes.component.css']
})
export class HeroesComponent implements OnInit {
selectedHero: Hero;
heroes = HEROES;
constructor(private heroService: HeroService) { }
ngOnInit() {
}
onSelect(hero: Hero): void {
console.log("onSelect hero");
this.selectedHero = hero;
}
}
这是我的模块定义。请记住,原始定义未在提供程序下包含任何内容,但是现在添加时没有任何作用。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms' ;
import { AppComponent } from './app.component';
import { HeroesComponent } from './heroes/heroes.component';
import { HeroDetailComponent } from './hero-detail/hero-detail.component'
import { HeroService } from './hero-service';
@NgModule({
declarations: [
AppComponent,
HeroesComponent,
HeroDetailComponent
],
imports: [
BrowserModule,
FormsModule
],
providers: [
HeroService
],
bootstrap: [AppComponent]
})
export class AppModule { }
所以也许有人可以告诉我问题是否是由于不使用角度CLI引起的,并且进一步介绍了不使用角度CLI来解决问题的正确方法是什么?
我依靠angular 6.1.7和打字稿3.0.3。
添加到github的源代码:github repository
亲切的问候, 塞巴斯蒂安