請不要以標題來評判,先閱讀帖子。Ionic 2/angular 2 - 如何在組件中添加Typescript的HTML元素?
我剛開始學習使用離子2框架的typescript和angular 2。
我加入的HTML元素引用typscript變量「的newitem」,像這樣:
<ion-content>
<ion-list inset>
<ion-item *ngFor="let item of todos" (click)="edit(item)">
{{item}}
</ion-item>
<ion-item>test</ion-item>
<div [innerHTML]=newItem></div>
</ion-list>
</ion-content>
在我的打字稿類我有一個函數addTodo()的組件,它設置爲HTML「的newitem」當pluss /在右上角添加圖標按:
addTodo(){
this.newItem = "<ion-item>test</ion-item>";
}
出於某種原因,‘離子項目’標籤上編譯忽略,它只是插入‘測試’的div元素。
的機應用將是這樣的:
組件類:
於是,我把它添加到視圖:
<form *ngIf="editedItem">
<ion-item><input [(ngModel)]="newItem" name="newItem">
<ion-buttons end>
<button ion-button color="danger" (click)="btnCancel()">Cancel</button>
<button ion-button color="secondary" (click)="btnAdd()">Add</button>
</ion-buttons>
</ion-item>
</form>
但現在當我點擊取消或添加,頁面需要重新加載。 我知道我做錯了[(ngModel)] =「newItem」,我應該嘗試將Angular變量傳遞給模型還是有更好的方法來做到這一點。
編輯:將變量傳遞給(click)函數,如下面@JoeriShoeby的答案所示。
在模型:
export class TodosPage {
newItem = "";
todos: string[] = this.getTodos();
editedItem: boolean = false;
constructor(public navCtrl: NavController) {
}
addTodo(){
this.editedItem = true;
}
btnAdd(){
this.todos.push(this.newItem);
this.editedItem = false;
}
btnCancel(){
this.editedItem = false;
}
getTodos(): string[]{
return ["item 1", "item 2"];
}
}
你能提供給我你的組件類?您實際上需要將新的項目對象推入'todos'數組中。不是html – JoeriShoeby
我已經將組件類添加到帖子中。我想我可能只是更新數組,但我希望新項目能夠輸入數據,並且有用於保存和取消的按鈕。我想也許我可以爲addTodo()內容創建一個新組件。但我不知道如何動態地添加一個功能的組件。 –
給我一個小時,然後我有一臺電腦來編碼給你解釋 – JoeriShoeby