2016-11-30 3 views
-1

ich nach dem Dependency Injection Muster ab: http://devdocs.io/angular~2_typescript/cookbook/dependency-injectionIonic/Schräg 2 Dependency Injection funktioniert nicht Muster Nach

Mein Code sieht wie folgt aus:

MyService.ts

import { Injectable } from '@angular/core'; 

@Injectable() 
export class MyService {} 

App component.ts

MyComponent.ts

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'theComponent', 
    templateUrl: 'theComponent.html' 
}) 
export class thisComponent { 
    constructor(private thisService: MyService) {} 

bekomme ich folgende Fehlermeldung: Kann nicht Namen 'MyService' finden.

Ich habe bereits um sicherzustellen, dass „emitDecoratorMetadata“: true

ich auch die Öffentlichkeit versucht haben, private und die extra discriptor öffentlichen/privaten aufhörte und ich jedes Mal den gleichen Fehler.

+0

Sieht so aus, als ob thisComponent den Import fehlt. ('import {MyService} von '../ services/MyService';') Ist dies Ihr tatsächlicher Code? – Fiddles

+0

@Fiddles, danke für Ihre Antwort. Ich sterbe langsam hier drüben auf einem schrecklichen Detail. Es ist eine vereinfachte Version meines Codes. Warum fragst du oder was fehlt deiner Meinung nach? Warum muss ich MyService in die MyComponent importieren, dachte ich, dass dies bereits über die app.component erledigt wurde. Bitte klären Sie. – rashadb

+1

@ wer auch immer mir -1 gab, bitte erkläre, was schief gelaufen ist. Die Details zum Importieren des Pfads zum Dienst wurden in den Dokumenten nicht berücksichtigt. Da ich jetzt nicht der einzige Neuling bin, der gerade Angular 2 lernt, bin ich sicher, dass andere in diese Falle fallen werden; Hoffentlich habe ich ihnen etwas Zeit gespart. – rashadb

Antwort

1

import Sie können die exportierten Definitionen aus einer anderen Datei/einem anderen Modul verwenden. Sie müssen die Klasse in jede Datei importieren, die diese Klassendefinition verwendet.

So in thisComponent.ts, müssen Sie

import { MyService } from './path/to/services/MyService';

https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#11.3.2 Siehe für weitere Informationen enthalten, was dies in Typoskript tut

Dies aus der Einfuhr Eigenschaften der Module in Angular2 unterschiedlich ist, die sind über Abhängigkeitsketten und Injektoren.

+0

danke das hat funktioniert, aber was ist der Sinn daran, eine root app.component.ts-Datei zu haben und sie dort zu importieren, wenn ich sie überallhin importieren muss? – rashadb

+0

Die kurze Version besteht darin, dass Sie die Definition in eine Datei importieren müssen, um sie in dieser Datei verwenden zu können. – Fiddles