简体   繁体   English

Angular4中的模板解析错误

[英]Template parse errors in Angular4

I'm trying to separate the declaration of components. 我正在尝试分离组件的声明。 I've created a new file called "Components.ts" and I wrote the declaration codes there and I'm exporting It. 我创建了一个名为“ Components.ts”的新文件,并在其中编写了声明代码,然后将其导出。

import { NgModule } from '@angular/core';
import { Component1} from '../components/Component1.component';
import { Component2} from '../components/Component2.component';
import { Component3} from 
'../components/Component3.component';

@NgModule({
  declarations: [
    Component1,
    Component2,
    Component3
  ] 
})

export class Components { }

And I'm defining into my "App.module.ts" file 我正在定义“ App.module.ts”文件

import { NgModule } from '@angular/core';
import { Components } from './Misc/Components';//Custom Module


@NgModule({
    declarations: [AppComponent], //This is my main component
    imports: [
       Components  // This is the custom module containg declarations of 
                   // other components
    ],

Here is the error: 这是错误: 在此处输入图片说明

UPDATE I've already Imported ReactiveForm Module. 更新我已经导入了ReactiveForm模块。

My project is running fine if i define all the components in the "App.module.ts" file like this: 如果我在“ App.module.ts”文件中定义所有组件,则我的项目运行良好:

declarations: [
    AppComponent,
    Component1,
    Component2,
    Component3
  ];

Problem occurs when i'm trying to seperate the declarations of all other components. 当我尝试分离所有其他组件的声明时,会发生问题。

You need to export those components since you want to use it to other modules 您需要导出这些组件,因为您要将其使用到其他模块

And base in the error you need to import ReactiveFormsModule since you're using formGroup and CommonModule since you're using ngIf 基于错误,由于您使用formGroup和CommonModule,因此您需要导入ReactiveFormsModule,因为您使用ngIf

Do it like this 像这样做

import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';  
import { NewComponentComponent } from '../components/Component1.component';
import { New2Component } from '../components/Component2.component';
import { ChildComponentComponent } from 
'../components/Component3.component';

@NgModule({
  imports: [ReactiveFormsModule, FormsModule, CommonModule],
  declarations: [
    Component1,
    Component2,
    Component3
  ],
 exports: [
    Component1,
    Component2,
    Component3
  ] 
})

export class Components { }

you need to add declarable classes to an NgModule's declarations list, not the file name. 您需要添加申报类的NgModule's申报清单,而不是文件名。
Every element defined in the declarations array is private by default. 默认情况下, declarations数组中定义的每个元素都是私有的。 use Exports property and you should only export whatever the other modules in our application need to perform its job. 使用Exports属性,您应该只导出应用程序中执行其工作所需的任何其他模块。

 import { NgModule } from '@angular/core';
    import { NewComponentComponent } from '../components/Component1.component';
    import { New2Component } from '../components/Component2.component';
    import { ChildComponentComponent } from 
    '../components/Component3.component';

    @NgModule({
      declarations: [
        NewComponentComponent,
        New2Component,
        ChildComponentComponent
      ],
   exports: [ NewComponentComponent,
              New2Component,
             ChildComponentComponent]
    })

    export class Components { }

The template error is because of formGroup, You need to import ReactiveFormsModule in your root module 模板错误是由于formGroup引起的,您需要在根模块中导入ReactiveFormsModule

    import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
    imports: [
        BrowserModule,

        ReactiveFormsModule
    ],

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM