我有一個angular2應用程序,其中組件類變得有點大。 我決定用'Handler'類創建一個文件夾,所以我可以把相關的代碼放在每個句柄類中。在我的組件類然後我創建的每個處理程序的實例,並在模板中使用這些Angular 2 - 調用模板循環中的類方法* ngFor
我的組件:
export class DesignerComponent {
public tab: TabHandler = new TabHandler(this);
我的處理程序:
export class TabHandler {
public designerComponent: DesignerComponent;
constructor(designerComponent: DesignerComponent)
{
this.designerComponent = designerComponent
}
add() {
if (this.designerComponent.formModel.tabs.length < 1) {
this.designerComponent.formModel.tabs.push(new TabModel("Tab"));
}
this.designerComponent.formModel.tabs.push(new TabModel("Tab"));
}
我的模板:
<li *ngFor="let tab of formModel.tabs; let i = index; ">
<a href="#" [ngClass]="{'tab-selected': formModel.currentTab == tab}"
class="tab-button"
attr.contenteditable="{{formModel.currentTab == tab}}"
(blur)="tab.changeShortTitle($event)"
(dragover)="allowDrop($event,'tab')"
(dragstart)="drag($event,i,'tab')"
(drop)="drop($event,i)"
(dragleave)="dragleave()"
(click)="tab.select(tab)">
{{tab.shortTitle}}
</a>
</li>
<li id="add-tab-buttonholder">
<a href="#" (click)="tab.add()"><i class="fa fa-plus" aria-hidden="true"></i></a>
</li>
最後的<li id="add-tab-buttonholder"> <a href="#" (click)="tab.add()
可以工作,因爲它不在* ngFor循環中。
我試圖在類中創建一個空的功能,並調用它在LOPP,但也失敗,出現相同的錯誤消息
ORIGINAL EXCEPTION: TypeError: self.context.$implicit.select is not a function
你應該改變你的模板..而不是調用'add()',你應該調用'tab.add()'。但沒有看到你的模板,這很難回答 – PierreDuc
我確實使用tab.add() –