2016-11-30 2 views
-1

Я после зависимостей шаблон впрыска от: http://devdocs.io/angular~2_typescript/cookbook/dependency-injectionИонные/Угловое 2 Dependency Injection Не работает Согласно Pattern

Мой код выглядит следующим образом:

MyService.ts

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

@Injectable() 
export class MyService {} 

приложение .component.ts

import { Component, ViewChild } from '@angular/core'; 
import { MyService } from '../services/MyService'; 

@Component({ 
    templateUrl: 'app.html', 
    providers: [MyService] 
}) 

export class MyApp {} 

MyComponent.ts

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

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

Я получаю следующее сообщение об ошибке: Не удается найти имя 'MyService'.

Я уже проверил, чтобы убедиться, что «emitDecoratorMetadata»: правда

Я также попытался общественность, частной и кончил дополнительное discriptor общественности/частную и я получаю ту же ошибку каждый раз.

+0

Похоже, что этот компонент отсутствует в импорте. ('import {MyService} из '../ services/MyService';') Это ваш фактический код? – Fiddles

+0

@Fiddles, спасибо за ваш ответ. Я медленно умираю здесь на страшной детали. Это упрощенная версия моего кода. Почему вы спрашиваете или что, по-вашему, отсутствует? Почему мне нужно импортировать MyService внутри MyComponent, я думал, что это уже сделано через app.component. Просьба уточнить. – rashadb

+1

@ Кто бы ни дал мне -1, пожалуйста, объясните, что пошло не так. Деталь для импорта пути к службе осталась без шаблона в документах. Учитывая, что я не единственный новичок, изучающий Angular 2 прямо сейчас, я уверен, что в эту ловушку попадут другие; надеюсь, я спас их некоторое время. – rashadb

ответ

1

import В ваши файлы классов вы можете использовать экспортированные определения из другого файла/модуля. Вам нужно импортировать класс в каждый файл, который использует это определение класса.

Так thisComponent.ts, вам необходимо включить

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

Смотрите https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#11.3.2 для получения дополнительной информации о том, что это делает в машинописном

Это отличается от импортных свойств модулей в Angular2, которые относятся к цепям зависимостей и форсункам.

+0

спасибо, что сработало, но в чем смысл иметь корневой файл app.component.ts и импортировать его там, если мне все еще нужно импортировать его повсюду? – rashadb

+0

Короткий вариант заключается в том, что вам нужно импортировать определение в файл, чтобы иметь возможность использовать его в этом файле. – Fiddles