为了账号安全,请及时绑定邮箱和手机立即绑定

如何在离子按钮组件中传递禁用条件

如何在离子按钮组件中传递禁用条件

倚天杖 2021-12-23 16:05:16
我有以下组件:import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';@Component({  selector: 'app-button',  styleUrls: ['./button.component.scss'],  template: `              <ion-button color="{{color}}" (click)="action.emit(null)" [disabled]="condition">                {{title}}              </ion-button>            `})export class ButtonComponent implements OnInit {  @Input() public title: string;  @Input() public color = 'primary';  @Input() public condition: any;  @Output() public action = new EventEmitter();  constructor() { }  ngOnInit() {  }}但是,当我将布尔值传递出去时,它不会呈现,因为我有一个布尔值,它以 false 开头并根据输入变为 true。编辑:问题是当 validDocument 变为 true 时,按钮不会再次呈现并保持禁用状态。HTML声明:<app-button title="Buscar" (action)="go()" condition="!validDocument"></app-button>
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

你有没有尝试过:


@Component({

  selector: 'app-button',

  styleUrls: ['./button.component.scss'],

  changeDetection: ChangeDetectionStrategy.OnPush, // force a component re-draw on input change

  template: `

              <ion-button color="{{color}}" (click)="action.emit(null)" [disabled]="condition">

                {{title}}

              </ion-button>

            `

})

如果您只是将 an 传递@Input()给模板,则可以将 更改changeStratergy为OnPush。


如果您还想@Input()在组件内部使用 ,您可以添加ngOnChanges触发函数,这些函数需要在@Input()更改时触发。


https://angular.io/api/core/ChangeDetectionStrategy


OnPush 如果页面上同时有很多组件,可以大大加快您的应用程序的速度


查看完整回答
反对 回复 2021-12-23
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

怎么样

[attr.disabled]="condition ? '' : null"

而不是直接使用disabled. 那应该可以完成这项工作。


查看完整回答
反对 回复 2021-12-23
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

试试这个代码


<ion-button color="{{color}}" (click)="action.emit(null)" [disabled]="condition">                    

  {{title}}

</ion-button>



查看完整回答
反对 回复 2021-12-23
  • 3 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信