Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 错误:模板分析错误:';mat卡';不是已知元素:_Angular_Angular Material_Angular5 - Fatal编程技术网

Angular 错误:模板分析错误:';mat卡';不是已知元素:

Angular 错误:模板分析错误:';mat卡';不是已知元素:,angular,angular-material,angular5,Angular,Angular Material,Angular5,大约两个月前,我启动了一个Angular 4 Material项目,当时安装了所有当前的npm,我正在使用Material.Angular.io中的大部分组件。从那时起,Angular 5.0.0已经推出。我在新的更新上重建了project,控制台出现以下错误 错误:模板分析错误:“mat card”不是已知元素: 1.如果“mat卡”是一个角度组件,则确认它是该模块的一部分。 2.如果“mat card”是Web组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到此组件的“@NgM

大约两个月前,我启动了一个Angular 4 Material项目,当时安装了所有当前的npm,我正在使用Material.Angular.io中的大部分组件。从那时起,Angular 5.0.0已经推出。我在新的更新上重建了project,控制台出现以下错误

错误:模板分析错误:“mat card”不是已知元素: 1.如果“mat卡”是一个角度组件,则确认它是该模块的一部分。 2.如果“mat card”是Web组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到此组件的“@NgModule.schemas”以抑制此消息


我已经检查了安装,并且相信我有所有最新的东西,但是以前工作过的代码现在失败了。这是A5的新要求,还是材料包尚未准备就绪?

您是否可以尝试从单独的入口点导入
MatCardModule
(又名
@angular/material/card
)?这对我很管用


如果你不提供任何代码,否则我真的帮不了你。

我最终启动了一个新的应用程序

npm cache clean -f
npm install -g n
ng new myAppName
然后我一次复制一个组件到components文件夹中。对于每个副本,我都运行了ng serve,并修复了每个问题(例如将导入添加到app.module.ts文件等)。我只在当前良好代码需要时安装npm组件

npm install myComponent --save
当我继续进行时,我发现了一些过时的md元素(比如md卡),并将它们转换为mat元素版本。有趣的是,显然在Angular 4中,他们支持相同组件的mat和md版本,但在5中,他们似乎不赞成使用某些组件


这是一个漫长的下午,但它帮助我清除了所有我尝试和放弃的npm模块,现在一切都正常了。

哇!我又碰到了这个问题,真的想弄明白。如果您遵循材料侧导航模块之类的特定文档,则可能会导致您在app.module.ts中拆分@NgModule声明,以将导出与其他导出分开,如

@NgModule({
   exports: [
      myModule,
      anotherModule
   ],
})
export class MaterialModule {}

@NgModule({
   imports: [
      ... all the rest of your stuff]
   declarations: [
      ... all your custom Components
})
export class AppModule {}
在这种情况下,在拆分它们之后,当您稍后使用

ng g component components/myNewModule
它可能会在另一个@NgModule部分下添加一个新的、附加的“声明”,从而中断对这些组件的访问,比如mat卡!只需将新添加的声明向下移动到其他声明,问题就会消失

我对此进行了两次测试,如果出现错误,它似乎可以解决问题:模板解析错误:“mat card”不是上面的已知元素。

在Angular 6中

app.module.ts:

import { MatCardModule } from '@angular/material';
...
@NgModule({
    declarations: [
    AppComponent,...
],
imports: [
...
MatCardModule,
....
]
...
})

html:



它起作用了!


显示您的代码请为我搜索!非常感谢。我认为从“@angular/material”导入“MatInputModule”就足够了,但显然您必须单独导入卡模块。找到了有关导入的良好解释
<mat-card>
    <p>
    it works!
    </p>
</mat-card>