使用多个@input()装饰器-ionic 4

时间:2019-11-06 15:06:04

标签: angular ionic4

我正在运行一个ionic 4应用程序

我创建了一个消息组件,该组件相应地加载了作为@Input传递给它的错误。

<control-messages [control]="saveUserForm.get('age')"></control-messages>

因此它将加载FormControl验证并显示其在我的服务中定义的自定义消息;

我想知道的是,是否有某种方法可以向组件发送多个属性,我想用<p class='help'></p>动态修饰success | warn | danger

这是组件:

  @Component({
    selector: 'control-messages',
    template: `<p class="help" *ngIf="errorMessage !== null">{{errorMessage}}</p>`
  })
  export class ControlMessagesComponent {
    @Input() control: FormControl;

    constructor() { }

    get errorMessage() {
      for (const propertyName in this.control.errors) {
        if (this.control.errors.hasOwnProperty(propertyName) && this.control.touched) {
          return ValidationService.getValidatorErrorMessage(propertyName, this.control.errors[propertyName]);
        }
      }
      return null;
    }
  }

我如何通过父级发送另一个参数以{{color}}的形式加载到模板中,例如

    template: `<p class="help {{color}}" *ngIf="errorMessage !== null">{{errorMessage}}</p>`

2 个答案:

答案 0 :(得分:6)

您可以根据需要设置任意数量的输入:

父html:

<control-messages 
    [control]="saveUserForm.get('age')"
    color="success">
</control-messages>

儿童ts:

export class ControlMessagesComponent {
    @Input() control: FormControl;
    @Input() color: string;

子html:

template: `<p class="help {{color}}" *ngIf="errorMessage !== null">{{errorMessage}}</p>`

但是,如果您从formControl中检查success | warn | danger,则无需从父级发送它。

答案 1 :(得分:3)

您可以添加任意数量的输入,例如:

@Component({
    selector: 'control-messages',
    template: `<p class="help" [style.color]="color" *ngIf="errorMessage !== null">{{errorMessage}}</p>`
  })
  export class ControlMessagesComponent {
    @Input() control: FormControl;
    @Input() color: string;
 ...

用法:

<control-messages 
    [control]="saveUserForm.get('age')"
    color="red">
</control-messages>