我是 Angular 的 Ionic 新手,我有一個動態物件,我想訪問 HTML 上的值 img click
TS:
showOptions = false;
options = [
{
id: '0',
icon: 'assets/icons/set-comparison.svg',
text: 'Set Comparison',
action: 'setComparison()'
},
....
];
selectedOptionItem = this.options[0];
HTML:
<li *ngFor="let item of options" [ngClass]="{ 'active' : item === selectedMenuItem }">
<button (click)="selectedOptionItem = item">
<img
[attr.src]="_measures.selectedMeasure.id === 'i' ? item.icon : item.icon2"
(click) ="item.action">
</button>
</li>
我試過了,(click) ="item.action"但它沒有采取行動
我創建了一個普通按鈕來查看事件是否正常作業:
<button (click)="setComparison()">
Set comparison <i ></i>
</button>
是的,它作業正常,我如何正確訪問我的物件的屬性?問候
SetComparison 組件:
async setComparison() {
const modal = await this.modalCtrl.create({
component: SetComparisonComponent,
cssClass: 'modal-comparison',
animated: true
});
modal.onDidDismiss().then((data) => {
if (data) {
}
});
return await modal.present();
}
模態控制:
constructor(
private modalCtrl: ModalController
....
)
模態控制器:
export declare class ModalController extends OverlayBaseController<ModalOptions, HTMLIonModalElement> {
private angularDelegate;
private resolver;
private injector;
constructor(angularDelegate: AngularDelegate, resolver: ComponentFactoryResolver, injector: Injector);
create(opts: ModalOptions): Promise<HTMLIonModalElement>;
static ?fac: ?ngcc0.??FactoryDef<ModalController, never>;
static ?prov: ?ngcc0.??InjectableDef<ModalController>;
}
uj5u.com熱心網友回復:
目前,陣列中actionitem 中的屬性options不存盤對函式的參考,而是存盤函式名稱的字串,因為它放在引號之間。此外,如果您要洗掉單引號,您也會遇到問題,因為函式參考在其后面包含括號,這意味著只要包含 TypeScript 檔案,它就會被呼叫。最后,我猜除非函式是全域定義的,否則簡單地呼叫它也是setComparison不夠的,因為這沒有指定函式的背景關系。如果setComparison函式定義在與 TypeScript 代碼的其余部分相同的范圍內,那么用this關鍵字參考它就足夠了。
要解決您的問題,您需要進行兩項調整:
- 在 action 引數中,存盤對未被主動呼叫的函式的參考,如下所示:
action: this.setComparison - 在單擊處理程式中,主動呼叫對存盤在
action屬性中的函式的參考,如下所示:(click)="item.action()"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/330077.html
