Button 角度,从.ts变量单击按钮函数
如何将一个按钮从可变内容创建到my component.html中,并将详细信息设置到Button 角度,从.ts变量单击按钮函数,button,angular-material,angular8,Button,Angular Material,Angular8,如何将一个按钮从可变内容创建到my component.html中,并将详细信息设置到.ts文件中 .ts doStuff(anArg:string){ 警报(anArg) } buildItems(){ for(设i=0;i
.ts
文件中
.ts
doStuff(anArg:string){
警报(anArg)
}
buildItems(){
for(设i=0;i<3;i++){
arg1='something_u'+i
推({
onClick:'doStuff('+arg1+'),
ButtonText:'按钮文本,arg1:'+arg1
})
}
}//端函数
component.html
{{lItem.buttonText}
不起作用,生成的代码只是:ng click=“lItem.onClick”
和任何[ng click]=“lItem.onClick”
或ng click=“{{lItem.onClick}”
给我一个编译错误
您对Angular 2+使用的语法无效 实际上,您应该这样做:
<div *ngFor="let lItem of items">
<button (click)="lItem.onClick()">
{{lItem.buttonTxt}}
</button>
</div>
{{lItem.buttonText}
此外,您还在item对象的onClick属性中定义一个字符串。您应该改为使用一个函数:
buildItems(){
for (let i = 0; i < 3; i++) {
arg1 = 'something_' + i
items.push({
onClick: () => doStuff(arg1),
buttonTxt: 'button_txt, arg1:' + arg1
})
}
}//end function
buildItems(){
for(设i=0;i<3;i++){
arg1='something_u'+i
推({
onClick:()=>doStuff(arg1),
ButtonText:'按钮文本,arg1:'+arg1
})
}
}//端函数
您对Angular 2+使用的语法无效
实际上,您应该这样做:
<div *ngFor="let lItem of items">
<button (click)="lItem.onClick()">
{{lItem.buttonTxt}}
</button>
</div>
{{lItem.buttonText}
此外,您还在item对象的onClick属性中定义一个字符串。您应该改为使用一个函数:
buildItems(){
for (let i = 0; i < 3; i++) {
arg1 = 'something_' + i
items.push({
onClick: () => doStuff(arg1),
buttonTxt: 'button_txt, arg1:' + arg1
})
}
}//end function
buildItems(){
for(设i=0;i<3;i++){
arg1='something_u'+i
推({
onClick:()=>doStuff(arg1),
ButtonText:'按钮文本,arg1:'+arg1
})
}
}//端函数
我的问题的解决方案如下
(点击)
(单击)=“lItem.onClick()”
语法触发onClick函数而不是属性app.component.ts
,因为它似乎不起作用doStuff(anArg:string){
警报(anArg)
}
buildItems(){
for(设i=0;i<3;i++){
arg1='something_u'+i
推({
onClick:()=>{do_stuff('someCustomArgs:'+arg1)},//将函数onClick属性包含到函数对象中
ButtonText:'按钮文本,arg1:'+arg1
})
}
}//端函数
component.html
{{lItem.buttonText}
我的问题的解决方案如下
(点击)
(单击)=“lItem.onClick()”
语法触发onClick函数而不是属性app.component.ts
,因为它似乎不起作用doStuff(anArg:string){
警报(anArg)
}
buildItems(){
for(设i=0;i<3;i++){
arg1='something_u'+i
推({
onClick:()=>{do_stuff('someCustomArgs:'+arg1)},//将函数onClick属性包含到函数对象中
ButtonText:'按钮文本,arg1:'+arg1
})
}
}//端函数
component.html
{{lItem.buttonText}
我添加了一个stackblitz示例onClick()
加括号会给你一个错误:_v.context.$implicit.onClick不是一个函数
它不是onClick,它只是单击lItem。onClick
是一个设置到.ts文件中的变量,这就是目标。即使使用
它也不起作用,请参阅我的StackBlitz,因为您的代码仍然是错误的。doStuff函数定义在哪里?我添加了一个带有括号的stackblitz示例onClick()
将给您一个错误:_v.context.$implicit.onClick不是函数
它不是onClick,它只是clicklItem。onClick
是一个设置到.ts文件中的变量,这就是目标。即使使用
它也不起作用,请参阅我的StackBlitz,因为您的代码仍然是错误的。在哪里定义了doStuff函数?
doStuff(anArg: string){
alert(anArg)
}
buildItems(){
for (let i = 0; i < 3; i++) {
arg1 = 'something_' + i
items.push({
onClick: () => { do_stuff('someCustomArgs: ' + arg1) }, // enclose the function onClick property into a function object
buttonTxt: 'button_txt, arg1:' + arg1
})
}
}//end function
<div *ngFor="let lItem of items">
<button (click)="lItem.onClick()"> <!-- as when parenthesis are given a function call is triggered, otherwise its a property -->
{{lItem.buttonTxt}}
</button>
</div>