私はコンポーネントファクトリを使用して、動的コンポーネントをオンザフライで生成しています。工場は、生成されたコンポーネントの入力パラメータを含むデータの配列が渡され:これは正常に動作して、「フィールド工場」コンポーネントは、データを処理オプションの注入@inputパラメータを宣言するには?
<app-field-factory [componentData]="componentSeedData"></app-field-factory>
。
export class TextInputComponent implements OnInit {
@Input() id: number;
@Input() field_name: string;
@Input() parent: string;
@Input() validators: {};
public fieldForm: FormGroup;
constructor(
private injector: Injector,
private formBuilder: FormBuilder,
) {
this.id = this.injector.get('id');
this.field_name = this.injector.get('field_name');
this.parent = this.injector.get('parent');
this.validators = this.injector.get('validators');
}
しかし、私は(。すなわち、それは存在するかどうかわからない)オプションこれらの入力のうちの1つを作る方法を動作することはできません:生成された各コンポーネントでは、私はこのようなものを持っています。私は "?"条件付きでthis.injector.get
行を折り返します。 「プロバイダがありません...」というエラーが表示されます。
場合によってはparent
入力が存在しない場合があります。生成されたコンポーネント内でそれをどのように考慮しますか?
のような条件を使うことができます。なぜあなたは '@Input()'を使ったのですか? 'injector'と' @Input() 'は無関係の2つです –