Javascript ';垫形式字段';不是已知元素
目前我有一个Javascript ';垫形式字段';不是已知元素,javascript,angular,angular-material2,Javascript,Angular,Angular Material2,目前我有一个x.component.html,其中包含以下内容(使用): 但问题是,如果尝试在浏览器中访问,我会收到以下错误消息(这只是一个摘录): 如果我正确理解,我不知何故/在什么地方遗漏了mat-…标记的定义,但我不知道我需要将什么样的定义放在哪里?有人能给我一点启发吗 更新(1): 安装jquery并更改.angular cli.json文件后,错误消息已按预期更改,以消除jquery问题,如下所示: ncaught错误:模板分析错误: “mat form field”不是已知元素: 1
x.component.html
,其中包含以下内容(使用):
但问题是,如果尝试在浏览器中访问,我会收到以下错误消息(这只是一个摘录):
如果我正确理解,我不知何故/在什么地方遗漏了mat-…
标记的定义,但我不知道我需要将什么样的定义放在哪里?有人能给我一点启发吗
更新(1):
安装jquery并更改.angular cli.json
文件后,错误消息已按预期更改,以消除jquery问题,如下所示:
ncaught错误:模板分析错误:
“mat form field”不是已知元素:
1.如果“mat form field”是一个角度组件,则确认它是该模块的一部分。
2.如果“mat form field”是一个Web组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到此组件的“@NgModule.schemas”以抑制此消息。(”
更新(3):
因此,在修复app.routing.module.ts后,如下所示:
从'@angular/core'导入{NgModule};
从'@angular/router'导入{RouterModule,Routes};
从“./user/user.component”导入{UserComponent};
从“./user/add user.component”导入{AddUserComponent};
从“./x/x.component”导入{XComponent};
常数路由:路由=[
{path:'users',component:UserComponent},
{path:'add',component:AddUserComponent},
{路径:'x',组件:XComponent}
];
@NGD模块({
进口:[
RouterModule.forRoot(路由)
],
出口:[
路由模块
],
声明:[]
})
导出类AppRoutingModule{}
我又前进了一步,得到了这个:
ERROR Error: Uncaught (in promise): Error: StaticInjectorError[XService]:
StaticInjectorError[XService]:
NullInjectorError: No provider for XService!
Error: StaticInjectorError[XService]:
StaticInjectorError[XService]:
NullInjectorError: No provider for XService
安装jquery
npm安装jquery
"../node_modules/jquery/dist/jquery.min.js",
将此行添加到angular-cli.json中的“scripts”:[]中
现在检查您的模块
MatTableModule
和MatFormModule
导入到您的模块中
更新
在xcomponent中替换
@Component({
selector: 'x-component',
styleUrls: ['x.component.css'],
templateUrl: 'x.component.html',
providers:[xService] // need to set provider
})
您需要在app.module.ts中导入以下内容:
import {MatInputModule} from '@angular/material/input';
import {MatTableModule} from '@angular/material/table';
import {FormsModule} from '@angular/forms';
import {MatInputModule} from '@angular/material/input';
...
@NgModule({
...,
imports: [
...,
MatInputModule,
...
],
...
})
export class AppModule { }
在您的x.component.ts中:
import {MatTableDataSource} from '@angular/material';
不可能将jquery作为角度材质的依赖项。 jquery和angular
mat表单字段的问题是两个独立的问题
您似乎安装了Bootstrap的主题,这需要jquery。
所以安装jquerynpm安装jquery——保存
添加键入:npm安装--save dev@types/jquery
"../node_modules/jquery/dist/jquery.min.js",
并将脚本添加到angular-cli.json:
"apps": [{
...
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
],
...
}]
要解决mat表单字段
问题,您需要在app.module.ts中导入此模块:
import {MatInputModule} from '@angular/material/input';
import {MatTableModule} from '@angular/material/table';
import {FormsModule} from '@angular/forms';
import {MatInputModule} from '@angular/material/input';
...
@NgModule({
...,
imports: [
...,
MatInputModule,
...
],
...
})
export class AppModule { }
处理角度材质导入的一种方便方法是为材质组件创建自定义模块:是否安装了Jquery?看起来不是这样。问题是如何将其添加到项目中?不幸的是,我不能完全归功于一个人来解决问题。这是一个很好的社区解决方案示例。感谢你们所有人…但你们到底为什么需要Bootstrap和Angular Material在一起?你们可以选择其中一个,而不是两个!好的,这意味着我可以删除Bootstrap…好的..谢谢提示..我在@NgModule中错过了MatInputModule和MatTableModule的两个条目。每个答案都让我更进一步了…谢谢。我不得不说,组合每个答案中的n个都带来了解决方案。现在我的应用程序启动了。好的,出现了不同的问题。这也可以工作,而不是在App.module.ts
中定义它。谢谢。
import {MatInputModule} from '@angular/material/input';
...
@NgModule({
...,
imports: [
...,
MatInputModule,
...
],
...
})
export class AppModule { }