Инъекции, не работающие в 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)
Кто-нибудь знает, что мне не хватает?
Ответы
Ответ 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 файл в конце.