角度调用组件从一个模块到另一个模块

时间:2018-04-21 10:17:45

标签: angular module components

我有两个模块gridusers模块和用户模块。网格模块将列出数据表中的所有用户,当我点击动作项目编辑时,它会打开一个弹出窗口来编辑用户。使用编辑用户,我尝试在用户模块中创建组件。当我尝试在gridusers模块中使用该编辑用户组件时,我收到错误:

  

模板解析错误和未捕获(在承诺中):错误:模板解析   错误:' app-edit-user'不是一个已知元素:

     
      
  1. 如果' app-edit-user'是一个Angular组件,然后验证它是否是该模块的一部分。
  2.   
  3. 如果' app-edit-user'是一个Web组件,然后添加' CUSTOM_ELEMENTS_SCHEMA'到了' @ NgModule.schemas'这个组件   压制此消息。
  4.   

对此有何帮助?

gridmodule
  -- gridmodule.ts
  -- gridcomponent.ts
  -- gridcomponent.html
  -- gridcomponent.scss

usermodule
  -- usermodule.ts
  -- usercomponent.ts
  -- usercomponent.html
  -- editusercomponent.ts
  -- editusercomponent.html
  -- usercomponent.scss
  -- editusercomponent.scss

editusercomponent.ts

import { Component } from '@angular/core';

@Component({
  selector: 'app-edit-user',
  templateUrl: './editusercomponent.html',
  styleUrls: ['./editusercomponent.scss']
})
export class editusercomponent{
  title = 'edit user';
}

gridmodule.ts

@NgModule({
    declarations: [
        editusercomponent
    ],
    imports: [
        .-----
    ],
})

2 个答案:

答案 0 :(得分:0)

如果您希望其他模块使用您的组件,您必须将其导出到您的模块中

试试这个

@NgModule({
    declarations: [
        editusercomponent
    ],
    imports: [
        .-----
    ],
    exports: [editusercomponent]
})

答案 1 :(得分:0)

使用@ngModule's exports数组。默认情况下,declarations数组中定义的每个元素都是私有的。你应该只导出我们的应用程序中需要执行其工作的任何其他模块。

usermodule.ts

import { CommonModule } from '@angular/common';
    @NgModule({
       imports:[CommonModule],
        declarations: [
            editusercomponent
        ],
       exports:[ editusercomponent]
    })

<强> gridmodule.ts
在gridmodule的imports数组

中使用Regsiter usermodule
 import { UserModule } from '../user-module/user.module';
    @NgModule({
      imports: [
        BrowserModule,
       UserModule
      ],
      declarations: [],
      bootstrap: []
    })