2017-08-18 88 views
0

得到FormControl例如我有以下組成部分:如何從ControlValueAccessor

@Component({ 
    selector: 'pc-radio-button', 
    templateUrl: './radio-button.component.html', 
    providers: [ 
     {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FieldRadioButtonComponent), multi: true} 
    ] 
}) 
export class RadioButtonComponent implements ControlValueAccessor { 
    ... 
} 

我可以分配和改變通過這些輸入值:

<pc-radio-button [formControl]="formControl"></pc-radio-button> 
<pc-radio-button [formControlName]="inputControlName"></pc-radio-button> 

不過,我需要的組件有直接訪問分配的formControl,因爲我需要根據其狀態添加樣式。

通過創建一個@Input()formControl不能解決問題。因爲它不包括窗體控件通過formControlName分配的情況。

回答

3

一個可能的解決方案是通過Injector獲得NgControl例如:

import { NgControl } from '@angular/forms'; 
export class PasswordComponent implements ControlValueAccessor { 
    ... 
    ngControl: NgControl; 

    constructor(private inj: Injector) { 
    ... 
    } 

    ngOnInit() { 
    this.ngControl = this.inj.get(NgControl) 
    } 

那麼你可以得到類似的地位

ngControl.control.status 

又見

相關問題