【问题标题】:ERROR in : 'clr-icon' is not a known element:错误:“clr-icon”不是已知元素:
【发布时间】:2019-06-18 18:30:45
【问题描述】:

运行以下命令:

ng build --prod --base-href ./

我明白了:

ERROR in : 'clr-icon' is not a known element:
1. If 'clr-icon' is an Angular component, then verify that it is part of this module.
2. If 'clr-icon' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("spinner spinner-sm spinner-inverse" [style.display]="loading ? 'inline-block' : 'none'"></span>
    [ERROR ->]<clr-icon clrSignpostTrigger shape="check" size="20" class="is-info" [style.display]="!loading && req")

我正在使用 Angular 7 和 Clarity 1.04。

摘自我的angular.json

        "styles": [
          "node_modules/@clr/icons/clr-icons.min.css",
          "node_modules/@clr/ui/clr-ui.min.css",
          "node_modules/prismjs/themes/prism-solarizedlight.css",
          "src/styles.css",
          "node_modules/lato-font/css/lato-font.min.css"
        ],
        "scripts": [
          "node_modules/core-js/client/shim.min.js",
          "node_modules/mutationobserver-shim/dist/mutationobserver.min.js",
          "node_modules/@webcomponents/custom-elements/custom-elements.min.js",
          "node_modules/web-animations-js/web-animations.min.js",
          "node_modules/prismjs/prism.js",
          "node_modules/prismjs/components/prism-typescript.min.js",
          "node_modules/@clr/icons/clr-icons.min.js"
        ]

关于如何调试的任何想法?

【问题讨论】:

    标签: angular vmware-clarity


    【解决方案1】:

    clr-icon 是一个自定义元素,但您可能知道这一点。

    您能否尝试将其添加到您的 polyfills.ts 文件中(如果您使用 AngularCLI 工具生成,它应该与 app/ 目录处于同一级别。

    import '@webcomponents/custom-elements';
    import '@clr/icons';
    

    然后,将 angular.json 文件中的脚本数组剥离为空,然后查看它是否构建。如果它确实开始将其他脚本列出的脚本(减去这个:"node_modules/@clr/icons/clr-icons.min.js" 和这个:"node_modules/@webcomponents/custom-elements/custom-elements.min.js",),以确保它们不会引起任何问题。

    【讨论】:

    • 我将这两行添加到 polyfills 中,并从 angular.json 中删除了所有脚本,结果相同:-/
    • 您是如何生成项目并为其添加 Clarity 的?
    • 当你有一个 Clarity 图标但没有在你的模块中包含 Clarity Icons NgModule 时会发生这种情况。也许您正在构建您的项目并包含非常具体的模块?如果是这样,您可以在所有 NgModules 中使用 ClarityModule 来避免这种情况。
    • 万岁 - 成功了!我有一个mycustom.module.ts,它在import 语句中有ClarityModule,但不在NgModuleimport 数组中。随意添加作为答案!
    • 感谢@hippeelee。该项目是一个非常古老的项目,我正在尝试升级到 Angular 7 - 不幸的是,它不是用最近的 CLI 构建的
    【解决方案2】:

    ClrIconModule 导入到您的app.module.ts,或者如果您有特定的模块,请像下面的示例一样导入它。

    home.module.ts

    import { NgModule } from '@angular/core';
    import { CommonModule } from '@angular/common';
    import { HomeComponent } from './home.component';
    import { RouterModule, Routes } from '@angular/router';
    import { ClrIconModule } from '@clr/angular';
    
    const routes: Routes = [
      {
        path: '',
        component: HomeComponent
      }
    ];
    
    @NgModule({
      declarations: [HomeComponent],
      imports: [CommonModule, RouterModule.forChild(routes), ClrIconModule]
    })
    export class HomeModule {}
    

    所以你可以在你的组件中使用&lt;clr-icon&gt;

    home.component.html

    <div class="main-container">
      <header class="header header-6">
        <div class="branding">
          <clr-icon shape="vm-bug"></clr-icon>
          <span class="title">Project Clarity</span>
        </div>
      </header>
      <div class="content-container">
        <div class="content-area">
          ...
        </div>
        <nav class="sidenav">
          ...
        </nav>
      </div>
    </div>
    

    【讨论】:

    • 在 Clarity 的较新版本中,它被称为 CdsIconModule,在许多情况下前缀从 Clr 更改为 Cds...
    猜你喜欢
    • 2021-11-18
    • 2023-02-10
    • 1970-01-01
    • 2020-02-08
    • 2018-10-15
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多