我正在将购买的第三方模板转换为Angular 5应用,然后遇到了错误。我是Angular 5的新手(但我知道AngularJS很好)并且不明白它试图告诉我什么?它似乎与显示/隐藏顶部导航栏的按钮有关。
错误消息(来自浏览器):
Error: Template parse errors:
No provider for ControlContainer ("imalize-styl-2 btn btn-primary " (click)="toggleNavigation()"><i class="fa fa-bars"></i> </a>
[ERROR ->]<form role="search" class="navbar-form-custom" method="post" action="#">
<div class="form-gro"): ng:///AppModule/TopNavigationNavbarComponent.html@4:6
component.html:
<div class="row border-bottom">
<nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<a class="minimalize-styl-2 btn btn-primary " (click)="toggleNavigation()"><i class="fa fa-bars"></i> </a>
<form role="search" class="navbar-form-custom" method="post" action="#">
<div class="form-group">
<input type="text" placeholder="Search for something..." class="form-control" name="top-search" id="top-search">
</div>
</form>
</div>
<ul class="nav navbar-top-links navbar-right">
<li>
<a href="#">
<i class="fa fa-sign-out"></i> Log out
</a>
</li>
</ul>
</nav>
</div>
component.ts
import { Component, OnInit } from '@angular/core';
import { smoothlyMenu } from '../../../app.helpers';
declare var jQuery: any;
@Component({
selector: 'app-top-navigation-navbar',
templateUrl: './top-navigation-navbar.component.html',
styleUrls: ['./top-navigation-navbar.component.less']
})
export class TopNavigationNavbarComponent implements OnInit {
toggleNavigation(): void {
jQuery('body').toggleClass('mini-navbar');
smoothlyMenu();
}
constructor() { }
ngOnInit() {
}
}
app.module.ts (这似乎是我google时提到的很多东西,但不是表格会抛出错误。)
...
import { ReactiveFormsModule, FormControl, FormsModule } from '@angular/forms';
...
答案 0 :(得分:27)
ReactiveFormsModule
之外,导入.bButton{
color:#fff;
height: 100%;
background-color: #55862d;
padding:7px 7px 7px 7px;
margin-left: auto;
}
.d {
font-weight:bold;
padding:7px 0px 7px 7px;
font-size: 1em;
color: #55862d;
border: 1px solid #6f6b68;
width:100%;
display: flex;
}
答案 1 :(得分:8)
我不确定为什么错误似乎指向表单元素之外的锚标记,但它是导致错误的表单元素。将FormGroup添加到表单可以解决问题。
<form role="search" class="navbar-form-custom" [formGroup]="form">
答案 2 :(得分:8)
在FormsModule
文件中导入views.module.ts
和ReactiveFormsModule对我有用:
views.module.ts
import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [
CommonModule,
RouterModule,
FormsModule,
ReactiveFormsModule,
...
],
declarations: [
...
],
exports: [
...
],
schemas: [NO_ERRORS_SCHEMA]
})
export class ViewsModule { }
答案 3 :(得分:8)
编辑文件“ app.module.ts”;更改以下说明:
import { ReactiveFormsModule } from '@angular/forms';
具有以下内容:
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
更改以下代码:
imports: [
BrowserModule,
ReactiveFormsModule
],
具有以下内容:
imports: [
BrowserModule,
ReactiveFormsModule,
FormsModule
],
答案 4 :(得分:5)
如果您试图从Angular组件显示纯HTML表单,请像这样在ngNoForm
标记中使用<form>
。
<form ngNoForm>
...
</form>
这应该防止Angular引发控制容器错误。
答案 5 :(得分:2)
将此行添加到component.spec.ts:
"english":$("input[name='english']:checked").val(),
答案 6 :(得分:1)
在花了2个小时之后,我意识到当我们在app.module和child.module中导入FormModule时,会发生这种错误。简单地从child.module中删除FormModule,然后将解决错误:)
答案 7 :(得分:1)
我在Angular(Jasmin)测试案例中遇到了这个问题。
我在beforeEach的单元测试导入中意外添加了角形模块,一个是FormModule(按角度),另一个是自定义FormModule。
我只需要自定义FormModule,一旦我按角度删除了FormModule,问题就解决了
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [CustomTranslateModule.forRoot(),
CustomRightPanelModule,
CustomListModule,
CustomInputTextModule,
CustomMasterPageModule,
CustomFormModule,
FormModule, // this is unnecessary
.....................
.....................