Sie versuchen, modal für Ihren Code zu verwenden, nur für die Typprüfung, wenn Sie, wie Sie in Frage verwendet, verwenden Sie brauchen nicht zu verwenden @inject,
besseren Weg Erstellen Sie einen einzelnen Dienst, in dem Sie Typen prüfen, Methoden aufrufen und tun können, was Sie wollen. Wenn Sie jetzt einen Dienst erstellen möchten, müssen Sie mindestens einen Dekorator bereitstellen, entweder @Component
oder Sie können @Injectable
verwenden. so -
import { Injectable } from './@angular/core';
@Injectable()
export class TestService {
name:string =null;
email:string =null;
...///
constructor(){
//do your stuff
}
}
oder Sie können dies auch so verwenden -
import { Component } from './@angular/core';
@Component({
selector: 'testService'
})
export class TestService {
name:string =null;
email:string =null;
...///
constructor(){
//do your stuff
}
}
PS: - It is necessary to decorate class with at least one decorator
nun Damit haben Sie erfolgreich eine Klasse erstellen, jetzt, wenn diese Klasse in mehreren Komponenten verwendet wird, jetzt
bootstrap(AppComponent, [TestService]).catch(err => console.error(err));
wenn Sie Ihren Dienst während Bootstrap injizieren, - man kann dies wie dies zum Zeitpunkt der Bootstrap injizieren Sie müssen dies nicht jedes Mal in der Liste der Anbieter angeben, weil angular automatisch Instanz dieses Dienstes für jede Komponente erstellen,
Aber wenn Sie nicht Ihren Dienst injizieren, während Bootstrap als Sie Ihren Dienst importieren müssen und auch benötigen in der Liste der Anbieter zu injizieren, als Sie in der Lage sind, es so zu verwenden: -
import { Component } from './@angular/core';
import { TestService } from './TestService';
@Component({
selector: 'testService',
providers: [TestService]
})
export class AppComponent {
constructor(private service : TestService){
this.service.blabla //now you are able to use your service here
}
}
Hope this man einige Punkte in Bezug auf Injection in Angular2 löschen.