typescript - Injicera en tjänst i en komponent
FYI: använder angular2 (2.0.0-alpha.45) & TypeScript (1.6.2)
Försöker skapa en enkel tjänst att injicera i en komponent.
Felet jag får:
Kan inte lösa alla parametrar för {ComponentName}(?). Se till att de alla har giltig typ eller annotationer.
Bootstrapping :
bootstrap(App, [ROUTER_PROVIDERS, HTTP_PROVIDERS]);
Service (my-service.ts):
import {Injectable} from 'angular2/angular2';
@Injectable()
export class MyService {
public doSomething() {}
}
Konsumerande komponent:
import {Component} from 'angular2/angular2';
import {MyService} from './my-service';
export class ListManager{
constructor(private myService: MyService){
console.log('myService', myService);
}
}
Saker jag har provat
I tjänsten:
- markera/avmarkera tjänsten med
@Injectable
- markera/avmarkera tjänsten med
Vid bootstrapping:
- Lägga till/ta bort
MyServicei listan över startprogramleverantörer
I komponent
- ange tjänsten som en leverantör
@Component({providers: [MyService]})
@Component({bindings: [MyService]})Svar #1
Jag tror att du skulle göra:
constructor(private myService: MyService){
console.log('myService', myService);
}
Du måste också ange tjänsten som en leverantör i @Component-definitionen
@Component({
...
providers: [MyService]})
Svar #2
Försök att göra detta i din komponent:
import {Component} from 'angular2/angular2';
import {Inject} from 'angular2/core';
import {MyService} from './my-service';
export class ListManager{
private listService: ListService;
constructor(@Inject(ListService) listService: ListService){
console.log('listService', listService);
}
}
(Observera den nya importen och @Inject inuti konstruktorn)
Låt mig veta om det fungerade för dig. En plunker kommer också hjälpa till att isolera problemet.
