Подтвердить что ты не робот

Инъекции, не работающие в angular 2.0

Недавно я начал играть с Angular2. Я пытаюсь получить инъекции для работы около полудня, но я все еще не могу понять, что я делаю неправильно.

Чтобы сделать это как можно проще, я скопировал код из 5 Min Quickstart на официальной веб-странице. Демонстрация сама по себе прекрасно работает, но когда я пытаюсь использовать инъекционные материалы, я получаю сообщение об ошибке

ОРИГИНАЛЬНАЯ ОШИБКА: не удается разрешить все параметры для MyAppComponent. Делать убедитесь, что все они имеют действительный тип или аннотации.

Мой typescript файл

/// <reference path="typings/angular2/angular2.d.ts" />
import {Component, View, bootstrap,} from 'angular2/angular2';

class Names {}

// Annotation section
@Component({
    selector: 'my-app',
    injectables: [Names]
})
@View({
    template: '<h1>Hello {{ name }}</h1>'
})
// Component controller
class MyAppComponent {
    name: string;
    constructor(names: Names) {
        this.name = 'Alice';
    }
}

bootstrap(MyAppComponent);

P.S. Как в 5 Min Quickstart, я использую Traceur, SystemJS и Angular2 alpha (23)

Кто-нибудь знает, что мне не хватает?

4b9b3361

Ответ 1

Ваш компилятор не добавляет свойства параметров в MyAppComponent (от просмотра вашего pluker). Я думаю, что это проблема. Если вы добавите

MyAppComponent.parameters = [[Names]]

тогда все будет хорошо работать.

  • Здесь - ваш плукер с исправлением.
  • Здесь - тот же пример в TS (с ES6)

UPD Благодаря @GrayFox для правильного указания (см. комментарий ниже):

Для будущих ссылок - используйте флаг --emitDecoratorMetadata при использовании tsc или добавьте emitDecoratorMetadata: true в конфигурацию, если вы используете gulp - typescript

Смотрите TypeScript параметры компилятора здесь (здесь вы можете найти emitDecoratorMetada).

Ответ 2

Положите это:

 <PropertyGroup Condition=" '$(Configuration)' == 'Debug' " >
   <DebugSymbols>true < /DebugSymbols>
   < TypeScriptRemoveComments > false < /TypeScriptRemoveComments>
   < TypeScriptSourceMap > true < /TypeScriptSourceMap>
   < TypeScriptAdditionalFlags > $(TypeScriptAdditionalFlags)--emitDecoratorMetadata < /TypeScriptAdditionalFlags>
 < /PropertyGroup>
 < PropertyGroup Condition= " '$(Configuration)' == 'Release' " >
   <DebugSymbols>true < /DebugSymbols>
   < TypeScriptRemoveComments > true < /TypeScriptRemoveComments>
   < TypeScriptSourceMap > false < /TypeScriptSourceMap>
   < TypeScriptAdditionalFlags > $(TypeScriptAdditionalFlags)--emitDecoratorMetadata < /TypeScriptAdditionalFlags>
 < /PropertyGroup>

в ваш *.njsproj файл в конце.