当前位置: 首页 > 知识库问答 >
问题:

无法绑定ngModel,因为它不是“component”[duplicate]的属性

景正文
2023-03-14

因此,我试图在angular 4中创建一个自定义表单组件,我添加了ngModel工作所需的所有内容,但它没有。

这是我的子组件:

export class Search extends ControlValueComponent {

}

它扩展到处理所有“ControlValueAccessor”的类ControlValueComponent。

这是类ControlValueAccessor:

import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms";
import {forwardRef, Input} from "@angular/core";

export class ControlValueComponent implements ControlValueAccessor {

  @Input() disabled: boolean;

  innerValue: any = '';

  static providerValueAcessor( ref: any): any {
    return [
      { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ref), multi: true }
    ];
  }

  onTouchedCallback: () => void = () => {};

  onChangeCallback: (_: any) => void = () => {};

  constructor() {
  }

  get value(): any {
    return this.innerValue;
  }

  set value(v: any) {
    if (v !== this.innerValue) {
      this.innerValue = v;
      this.onChangeCallback(v);
    }
  }

  writeValue(value: any) {
    if (value !== this.innerValue) {
      this.innerValue = value;
    }
  }

  registerOnChange(fn: any): void {
    this.onChangeCallback = fn;
  }

  registerOnTouched(fn: any): void {
    this.onTouchedCallback = fn;
  }

}

为了获得提供程序权限,我使用函数ProviderValueAccessor(位于ControlValueComponent中)如下所示

providers: ControlValueComponent.providerValueAcessor(SysSearch)

但是,当我向子组件添加[(ngModel)]时,它总是得到错误,即ngModel不是该组件的属性

我试着这样用:

<search [(ngModel)] = 'value'><search>

共有2个答案

阳宾实
2023-03-14

我已经解决了这个问题。

我需要在调用子组件的父组件上直接导入FormsModule,以便ngModel工作...我是这样做的:

import {FormsModule} from "@angular/forms";


@NgModule({
  imports: [
    FormsModule,
    SearchModule
  ]

这样,父组件就能够使用ngmodel属性。谢谢你的帮助

凌波峻
2023-03-14

在类文件中导入FormsModule:

null

import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms";
---->
import {ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule} from "@angular/forms";
 类似资料:
  • 问题内容: 即使未显示组件,启动我的Angular应用程序时也会出现以下错误。 我必须将注释掉,这样我的应用才能正常工作。 我正在查看Hero插件,但与我的代码没有任何区别。 这是组件文件: 问题答案: 是的,就是这样,在app.module.ts中,我刚刚添加了:

  • 所以,我试图在angular 4中创建一个自定义表单组件,我添加了ngModel工作所需的一切,但它没有。 这是我的子组件: 我试着这样使用它:

  • 我更新我们的应用程序从rc4到angular2.0.0之一,我得到一个模板解析错误在运行时。这是我的视图模板: 错误在routerlink上。以下是错误: 路由器链接在我看来并不畸形...我到底做错了什么?

  • 我已经在我的应用程序中导入了FormsModule和ReactiveFormsModule。模块,html应该是正确的, 错误 进口 我在运行npm-run-test:local时遇到这个错误,但如果我执行npm-start,它运行得很好。我使用了multiple[(ngModel)],它们都有相同的问题,我只是以这个为例。 我怎样才能解决这个问题?

  • 几天前,我开始使用角项目的离子。我有一个问题,当我服务我的项目.这是错误: NG0303:不能绑定到'ngModel',因为它不是一个已知的属性'离子范围'. 我想用离子范围的亮度普林。这是我的密码。 应用程序。单元ts 我有一些随机组件的共享文件夹和一个随机器。模块来管理它们。 在randomer.module.ts 还有我的brigthness.component.html 亮度组成部分ts:

  • 是的,这可能是第一百次有人遇到这个问题,但没有解决办法对我有效。。。 我使用角2.0.0 rc和什么都不会工作,我想我错过了一些东西,但我不知道是什么 这是我的文件,它们都可以正确传输,是的,我尝试使用不推荐的路由,是的,我根据文档做了,两者都不起作用。 app.component.ts 主要的ts 指数html 其余的文件几乎都是教程中的复制粘贴,所以我不会用更多的代码来垃圾邮件。。。 更新,我