参考下面的代码,无论我使用<dform [meta]="frmeta"></dform>还是<dform meta="{{frmeta}}"></dform>我都会得到一个错误指示
无法绑定到“meta”,因为它不是“dform”的已知属性。
编译类型脚本代码时。
有人知道我的代码出了什么问题吗?
DFORMComponent.ts公司

import { Component, Attribute } from '@angular/core';
import {FormBuilder, Validators} from '@angular/forms';

@Component({
    selector:'dform',
    templateUrl:'DformComponent.html'
})
export class DformComponent{
  frmdata:any;

  constructor(fb:FormBuilder, @Attribute('meta') public meta:any){
    // this.frmdata = fb.group({
    //   phone:["123456789", containsMagicWord]
    //   , ip:["192.168.137.169", containsMagicWord]
    // });
    console.log(this.meta);
    debugger;
    this.frmdata = fb.group(this.meta);
  }

  dosubmit(event:any){
    console.log(this.frmdata.value);
  }
}

dformcomponent.html
<form [formGroup]="frmdata" (submit)="dosubmit($event)">
    <inputmask formControlName="phone" mask="(___) ___ - ___"></inputmask>
    <inputmask formControlName="ip" mask="___.___.___.___" ></inputmask>
    <button type="submit">Post</button>
    <pre>{{ frmdata.value|json }}</pre>
</form>

根组件.ts
import { Component } from '@angular/core';

function containsMagicWord(c: any) {
  if(c.value.indexOf('magic') >= 0) {
    return {
      noMagic: true
    }
  }

  // Null means valid, believe it or not
  return null
}

@Component({
  selector: 'body',
  templateUrl: 'RootComponent.html'
})
export class RootComponent {
  frmeta:any = {
      phone:["123456789", containsMagicWord]
      , ip:["192.168.137.169", containsMagicWord]
  };
  constructor(){

  }
}

根组件.html
<dform meta="{{frmeta}}"></dform>

最佳答案

您需要将DformComponent添加到

@NgModule({
  ...,
  declarations: [DformComponent]

组件需要一个
@Input() meta:SomeType;

对于
[meta]="frmeta"

是有效的。

关于angular - Angular 2 aot无法绑定(bind)到X,因为它不是Y的已知属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40745377/

10-10 00:43