Angular 6 生产版本“无法绑定到‘disabled’,因为它不是‘div’的已知属性”

2024-03-18

我的应用程序在使用 JIT 编译器时似乎可以工作,但是当我尝试使用 AOT 编译器时ng build --prod然后它抛出一个错误:

ERROR in : Can't bind to 'disabled' since it isn't a known property of 'div'. ("[ERROR ->]<div formButton></div>")

我如何找出这个错误来自哪里?

我只是添加了延迟加载的功能模块,而不是导入中的所有内容app.module.ts我不知道是否需要导入FormButtonComponent进入功能模块?

我搜索了代码库,但找不到任何实例formButton是在任何东西上,除了button.

Here's button.component.ts:

import { Component, HostBinding, Input, OnChanges, SimpleChanges } from "@angular/core";

/**
 * Button with loading and disabled states
 */
@Component({
    moduleId: module.id,
    selector: '[formButton]',
    templateUrl: 'button.component.html'
})
export class FormButtonComponent implements OnChanges {
    @Input() loading? = false;
    @Input() disabled? = false;
    @HostBinding('disabled') disabledAttribute = false;

    ngOnChanges(changes: SimpleChanges): void {
        this.updateState();
    }

    updateState(): void {
        this.disabledAttribute = this.disabled || this.loading;
    }
}

button.component.html

<ng-content></ng-content>
<spinner [size]="small" *ngIf="loading"></spinner>

以下是我的应用程序中其他地方的一些调用示例:

<button formButton [loading]="template.loading" [disabled]="disabled" class="button" type="submit">Design</button>

<button formButton class="button" [loading]="form.disabled" (click)="save()">Change Password</button>

<button formButton [ngClass]="buttonClass" (click)="upload()" [loading]="uploaderWrapper.isUploading">{{ buttonText }}</button>


编辑:我与 Angular 团队成员之一交谈过,这是由于我的选择器没有指定元素造成的。所以当构建时ng build --prod角度用途div作为“最小公分母”:

您看到的错误是指因为 div 是最常见的 HTML 元素的分母。如果组件选择器未指定 任何其他元素类型,那么它就成为 div。

所以有两种解决方案:

1) 使选择器更加具体,以便它只尝试使用具有以下内容的元素进行 AOT 编译disabled财产。

Update selector: '[formButton]' to selector: 'button[formButton]'

@Component({
    moduleId: module.id,
    selector: 'button[formButton]',
    templateUrl: 'button.component.html'
})

2)更新使用attr.disabled代替disabled。这样做的缺点是你必须使用value | null代替true | false因为浏览器会寻找disabled属性而不是它的值是什么。

@HostBinding('disabled') disabledAttribute = false;

to

@HostBinding('attr.disabled') disabledAttribute = false;

使用此模板:

<ng-content></ng-content>
<spinner [size]="small" *ngIf="loading"></spinner>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 6 生产版本“无法绑定到‘disabled’,因为它不是‘div’的已知属性” 的相关文章

随机推荐

  • 按钮中的文本和图标垂直对齐

    我无法将字体精美的图标与 Bootstrap 框架下按钮内的文本垂直对齐 我尝试了很多方法 包括设置行高 但没有任何效果
  • 模板参数、#define 和代码重复

    我有很多这样的代码 define WITH FEATURE X struct A ifdef WITH FEATURE X declare some variables Y endif void f void A f do somethin
  • Perlin Noise 2D:将静态变成云

    我正试图将注意力集中在柏林噪音上 本文 https web archive org web 20160529013225 http freespace virgin net hugo elias models m perlin htm有所帮
  • 每次添加消息时AWS死信队列Cloudwatch警报

    我想触发一个AWS cloudwatch每次有消息添加到我的 DLQ 时都会发出警报 我正在使用云形成来部署我的 sqs dlq 资源 但我不知道如何配置此类警报 配置警报时需要使用 NumberOfMessagesSent 请参阅Clou
  • 以 Grid 作为模板的 ItemsControl :向 Grid 添加控件

    Windows Phone 7 1 项目 XAML 我有一个以网格为模板的项目控件 绑定到数据元素的集合 一切正常 但是 我必须向网格添加一张额外的图像 该图像不会绑定到集合 某种标题图像 我有这个代码
  • 每个构建类型的 resConfigs

    我怎样才能覆盖resConfigs每个构建类型 我读到口味允许这样做 但我不使用它们 我只想为我的调试构建另一组受支持的语言 这是我尝试过的 buildTypes debug resConfigs de en allow also germ
  • 附加数据框中所有行中的单词或字符列表

    有没有一种方法可以在不使用 for 循环的情况下附加数据框中不同行中存在的列表 我可以通过使用 for 循环来实现这一点 但我想以更有效的方式实现这一点 可能不使用 for 循环 d col1 1 2 3 4 5 col2 a a b c
  • 如何转义url中的#符号?

    我有 符号作为参数传递到我的 URL 中 但它会丢弃 后面的所有参数值 请建议我解决方案 以下是我的网址 GetConnectiont customerID customer1 activenode Sv50 parent server f
  • 在 Python Pandas Dataframe 中动态添加列的数据处理

    我有以下问题 假设这是我的 CSV id f1 f2 f3 1 4 5 5 1 3 1 0 1 7 4 4 1 4 3 1 1 1 4 6 2 2 6 0 所以 我有可以按 id 分组的行 我想创建一个如下所示的 csv 作为输出 f1 f
  • 修改ggplot2 Y轴以使用整数而不强制执行上限[重复]

    这个问题在这里已经有答案了 我正在尝试修改 ggplot2 中的轴 以便它是一个小数点 并且每个整数都有一个标签 但是 我想这样做没有上限 以便它会自动调整不同计数的数据 我的问题和问题之间的区别这里提出的问题 https stackove
  • 在 Linux 中的类路径上使用 javac 和多个特定的 jar(波浪号在冒号后不扩展)

    我正在尝试通过类似于以下的命令编译一个使用两个 jar 文件 trove 和 apache commons 集合 的 java 源文件 javac cp m2 repository gnu trove trove 3 0 0 trove 3
  • 如何获取ASCII后面的二进制代码(C#)

    我试图找出如何将控制台的输入转换为二进制 如何在 C 中进行这样的转换 先感谢您 string s Console ReadLine byte bytes Encoding ASCII GetBytes s 请注意 控制台使用的编码实际上不
  • pgsql 返回表错误:列引用不明确

    我不断收到此错误 列引用 人 不明确 我需要返回一个表 个人整数 当我使用 SETOF 整数时它工作正常 但在这种情况下它不起作用 我的另一个函数 recurse 完美地返回一组整数 CREATE OR REPLACE FUNCTION t
  • 来自基类的用户定义转换运算符

    介绍 我知道 不允许用户定义的与基类之间的转换 MSDN 给出了对此规则的解释 你不需要这个运算符 我确实了解用户定义的转换to不需要基类 因为这显然是隐式完成的 但是 我确实需要转换from一个基类 在我当前的设计 非托管代码的包装器 中
  • Matplotlib 轴位置和颜色条对齐

    我正在尝试将多个颜色条与使用其中之一生成的子图对齐gridspec or fig add subplots 我想添加颜色条fig add axes在 matplotlib v2 02 中 因为它允许详细的对齐控制 但是 我需要获取图形位置才
  • 熊猫从日期时间列中获取第二个最小值[重复]

    这个问题在这里已经有答案了 我有一个带有日期时间列的数据框 我可以通过使用获得最小值 df Date min 我怎样才能得到第二个 第三个 最小值 Use nlargest or nsmallest 对于第二大的 series nlarge
  • Symfony2 和控制器中的 DRY 方法

    我正在使用 Symfony2 为我的公司开发一个小型 CMS 我真的很喜欢这个框架 我喜欢表单类并重用它们 毕竟这都是关于表单的 但是 是的 有一个 但是 我感觉我在做同样的事情 复制并粘贴到所有控制器中 我们讨厌的代码重复 随着所有业务逻
  • MbUnit:比较双打的最优雅的方式?

    The code Assert AreEqual 9 97320998018748d observerPosition CenterLongitude produces Expected Value Actual Value 9 97320
  • 安全地向 RESTFUL API 提供凭据

    我创建了一个 RESTful 服务器应用程序 它可以在有用的 URL 例如 www site com get someinfo 上处理请求并提供服务 它是在春天建造的 但是 这些访问受密码保护 我现在正在构建一个客户端应用程序 它将连接到这
  • Angular 6 生产版本“无法绑定到‘disabled’,因为它不是‘div’的已知属性”

    我的应用程序在使用 JIT 编译器时似乎可以工作 但是当我尝试使用 AOT 编译器时ng build prod然后它抛出一个错误 ERROR in Can t bind to disabled since it isn t a known