【问题标题】:Angular unit test failed for [ngModelOptions]="{standalone: true}" [duplicate][ngModelOptions]="{standalone: true}" 的角度单元测试失败 [重复]
【发布时间】:2017-02-07 09:57:27
【问题描述】:

我的 angular2 单元测试代码因以下回溯而失败。我知道这是因为没有将 formControlName 属性添加到 FormGroup 内的 input 标记中。

但我在该特定标签中添加了[ngModelOptions]="{standalone: true}"

<md-slide-toggle [(ngModel)]="isAvailable" color="primary" [ngModelOptions]="{standalone: true}">
</md-slide-toggle>

它在主站点中完美运行,但在测试时,它显示

PhantomJS 2.1.1 (Linux 0.0.0): Executed 39 of 65 (1 FAILED) (0 secs / 1.391 secs)
PhantomJS 2.1.1 (Linux 0.0.0) VehicleFormComponent should create FAILED
    Error: Error in ./VehicleFormComponent class VehicleFormComponent - inline template:41:63 caused by: No value accessor for form control with unspecified name attribute in src/test.ts (line 98781)
    _throwError@webpack:///~/@angular/forms/src/directives/shared.js:122:0 <- src/test.ts:15986:48

【问题讨论】:

    标签: javascript unit-testing angular angular2-template


    【解决方案1】:

    你可能知道,如果你没有指定,你得到的错误

    [ngModelOptions]="{standalone: true}
    

    如下:

    所以另一个选项是设置name 属性。您当前的错误:

    ... form control with unspecified name attribute...

    似乎与上图中的错误非常相似。 如果无论您使用的是ngModelOptions 还是name 属性,都可以尝试删除ngModelOptions 并插入name。从功能上讲,这不会以任何方式改变代码的执行,因此在我看来这是一个非常可行的选择(如果有效)

    【讨论】:

    • 我将名称属性设置为&lt;md-slide-toggle [(ngModel)]="isAvailable" color="primary" name="isAvaialble"&gt;,但它显示为no form control associated with the name isAvaiable。最后,我将[ngModelOptions]="{standalone: true}" 替换为ngDefaultControl,它就可以工作了。
    • 很好,你想通了! :)
    猜你喜欢
    • 2021-05-25
    • 2018-11-18
    • 2023-01-22
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2018-05-03
    相关资源
    最近更新 更多