0

我正在尝试将我的select元素绑定到一个真/假值。-- select --由于未显示该选项,因此绑定似乎发生了,这意味着 Angular 知道有一个值,但默认情况下显示为空白。如果我点击它,我会看到我的“是”和“否”选项,但最初并未设置。

        <select class="form-control" id="primary" name="primary" required
                [(ngModel)]="primaryValue">
            <option *ngIf="primaryValue === null" [ngValue]="null">-- Select --</option>
            <option [ngValue]="true">Yes</option>
            <option [ngValue]="false">No</option>
        </select>

primaryValue打字稿文件中是这样定义的:

@Input() primaryValue: boolean;

如果我只用一个输入来做这件事,它工作正常,但如果我使用primaryValue 作为输入和输出,那么它就不起作用。你可以在StackBlitz上看到一个例子

4

3 回答 3

1

您必须传递该boolean值才能设置初始值。

<app-lab-hazard-classification-question-group 
    (change)="onHazardValueChanged($event)"
    primaryQuestion="Primary Question One"
    [primaryValue]="true"                         <!-- Set the boolean value -->
    secondaryQuestion="Secondary Question One" 
    [secondaryValue]="false">                     <!-- Set the boolean value -->
</app-lab-hazard-classification-question-group>

工作副本在这里 - https://stackblitz.com/edit/angular-5mdctu

于 2018-11-15T07:40:32.893 回答
0

双向绑定也称为“盒子里的香蕉”绑定,即 [()]。

在您的 AppComponent.html 中,颠倒括号的顺序以正确绑定

<app-question-group [(primaryValue)]="valueOne"></app-question-group>
于 2018-11-15T00:23:20.737 回答
0

终于找到了这个。在显示问题的组件中,我将其作为@Component定义的一部分:

viewProviders: [  // This makes the whole child participate in the parent's form validation
    {
        provide: ControlContainer,
        useExisting: NgForm
    }
]

我在网上看到的说它使子控制器的组件成为父组件表单验证的一部分。一旦我删除了该部分,一切都开始正常工作。

于 2018-11-15T00:54:19.500 回答