【问题标题】:Angular: Passing a function to dumb componentAngular:将函数传递给哑组件
【发布时间】:2017-10-10 03:48:20
【问题描述】:

我正在使用 Angular 和 ngrx 编写 AWS 安全组模块克隆。我正在尝试将一个方法传递给哑组件以创建一个新的安全组。

...

const schemas: any[] = [];

@NgModule({
    imports: [
        CommonModule
    ],
    declarations: [
        SecurityGroupsComponent,
        SecurityGroupsTableComponent,
        SecurityGroupsListComponent
    ],
    schemas: schemas,
    exports: [SecurityGroupsComponent]
})

export class SecurityGroupsModule { }

import { Component } from '@angular/core';
@Component({
    selector: 'app-security-groups-table',
    templateUrl: './security-groups-table.component.html',
})
export class SecurityGroupsTableComponent  {
    onCreateSecurityGroup() {
        console.log('Create Security Group');
    }

}
<app-security-groups-list
    [createSecurityGroup]="onCreateSecurityGroup"></app-security-groups-list>

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



@Component({
    selector: 'app-security-groups-list',
    templateUrl: './security-groups-list.component.html',
})
export class SecurityGroupsListComponent {
    @Input()
    createSecurityGroup: Function;

    selectSecurityGroup(securityGroupId: string) {
        this.securityGroupSelected.next(securityGroupId);
    }

}

当模板被渲染时,我得到了这个异常: 无法绑定到“createSecurityGroup”,因为它不是“app-security-groups-list”的已知属性。

我做错了什么?

【问题讨论】:

    标签: javascript angular data-binding angular2-template


    【解决方案1】:

    您似乎错过了将SecurityGroupsListComponent 添加到NgModule

    请确保在使用前完成以下步骤:

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

    【讨论】:

    • 不,它在 NGModule 中被正确声明。谢谢你的回答。
    • 这些 sn-ps 只是一个巨大应用程序的抽象。您想查看代码的哪些部分?
    • 我添加了 NgModule
    【解决方案2】:
      export const DECLARATIONS = [SecurityGroupsComponent,
                             SecurityGroupsTableComponent,
                            SecurityGroupsListComponent]        
    

    然后

        declarations: DECLARATIONS,
        schemas: schemas,
        exports: DECLARATIONS
    

    【讨论】:

    • 我不想导出多个组件
    • 如果您在 SecurityGroupsModule 之外使用 app-security-groups-list,则必须将其导出。
    • 我没有在这个模块之外使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2017-10-11
    • 2018-10-03
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多