我有一個root-app組件,它在模板中被定義爲這樣。錯誤:在將指令傳遞到父指令外時,未定義輸出
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功能。
你添加了嗎? '從'angular2/core'導入{輸出};' – Langley
謝謝。我這樣做,並獲得'綁定表達式不能包含在[開發人員=== selectedDeveloper; this.complete.next();]在DevTableComponent @ 3:8'列33的鏈式表達式。我在技術上做的是將開發者的價值傳遞給父組件。然後將其作爲輸入傳遞給 .dev-details正在正常工作。但無法捕獲帶有價值的事件。 –
Gary
你不能在模板中添加那麼多的代碼,你必須將所有的邏輯添加到一個返回布爾值的函數中,並像這樣調用它:'[class.selected] =「shouldSelect()」' – Langley