У меня есть компонент корневого приложения, который определен как шаблон шаблона.`Ошибка: вывод не определен` при передаче значения вне директивы родительской директивы
template: `
<dev-table (complete)="onSelect(developer)"></dev-table>
<dev-details [selectedDeveloper]="selectedDeveloper"></dev-details>
`
directives: [DevDetailsComponent, DevTableComponent],
providers: [DevValueService, provide(DevService, {useClass: DevService})]
представляет собой список, и по выбору одного из внутреннего списка он должен послать значение списка (разработчик), который передается в качестве выбранного разработчика. @Input определен правильно и берется правильно. Но @output дает ошибку Error: Output is not defined
Какое определение необходимо или что такое метод определения. Я чего-то не хватает.
Это определение класса:
@Component({
selector: 'dev-table',
template: `
<ul class="dev">
<li *ngFor="#developer of developers"
[class.selected]="developer === selectedDeveloper;this.complete.next();"
(click)="onSelect(developer)">
<span class="spanbackground">{{developer.name}}</span> - {{developer.skill}}
</li>
</ul>
`,
providers: [DevService]
})
export class DevTableComponent implements OnInit{
public developers : Developer[];
public selectedDeveloper : Developer;
constructor(private _DevService: DevService) { }
@Output() complete = new EventEmitter();
public onSelect(developer: Developer) { this.selectedDeveloper = developer; }
getDevelopers(){
this._DevService.getDevelopers().then(developers => this.developers = developers)
}
ngOnInit(){
this.getDevelopers();
}
}
ОБНОВЛЕНО: Окончательный рабочий код не имел developer === selectedDeveloper;this.complete.next();
, а this.complete.next()
был введен в onSelect функции.
Вы добавили это? 'import {Output} из" angular2/core ";' – Langley
Спасибо. Я сделал это, и я получаю 'Binding выражение не может содержать цепное выражение в столбце 33 в [developer === selectedDeveloper; this.complete.next();] в DevTableComponent @ 3: 8'. То, что я технически делаю, передает значение разработчика родительскому компоненту. а затем передавая его как вход в .dev-детали работают правильно изолированы. Но не удалось захватить событие, отправленное со значением. –
Gary
Вы не можете добавить много кода в шаблон, вы должны добавить всю эту логику в функцию, которая возвращает логическое значение и вызывает его следующим образом: '[class.selected] =" shouldSelect() "' – Langley