【问题标题】:Angular 2 Extending an NPM component Ngx-Modal with WrapperAngular 2 使用 Wrapper 扩展 NPM 组件 Ngx-Modal
【发布时间】:2017-06-22 11:40:28
【问题描述】:

我正在尝试在 Angular 2 中本地扩展现有的工作组件。我没有得到任何真正有用的指示来说明问题是什么,没有错误等。

所以我修改了一个现有的 plunker (https://plnkr.co/edit/8x34JbEhYdVms4iYLRvM?p=preview),它有一个 ngx-modal 工作的例子。

(我正在尝试正确使用这种技术,所以它是否是 ngx-modal 并不重要,它恰好是我发现一个很好的 plunker 的技术。)

我添加了一个扩展其他组件的新组件...
ngx-modal.component.ts

//Extend and wrap NGX MODAL
import { Component } from '@angular/core';
import { ModalModule } from "ngx-modal";

@Component({
    selector: 'ext-ngx-modal', 
    template: `<ng-content></ng-content>`,
})
export class NgxModalComponent extends ModalModule {
    constructor() {
        super();
    }
}

我用
app.ts

包装了现有的模式
<ext-ngx-modal>
   <modal #myModal>
        <modal-header>
             <h1>Modal header</h1>
        </modal-header>
        <modal-content>
             Hello Modal!
        </modal-content>
        <modal-footer>
           <button class="btn btn-primary"(click)="myModal.close()">close</button>
       </modal-footer>
    </modal>

并注册组件:

import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {ModalModule} from "ngx-modal";
import {NgxModalComponent} from "ngx-modal.component"

@Component({

等等……

@NgModule({
  imports: [ BrowserModule,ModalModule ],
  declarations: [ App, NgxModalComponent ],
  exports: [ NgxModalComponent ],
  bootstrap: [ App ]
})

在此之后 plunker 将无法运行...!

My extended Plunker-not working

【问题讨论】:

    标签: angular inheritance wrapper ngx-modal


    【解决方案1】:

    1. 模态/ModalModule

    您的NgxModalComponent 应该导入和扩展Modal,而不是ModalModule

    export class NgxModalComponent extends Modal {
    

    2. 模板语法错误

    您忘记关闭App template 中的&lt;ext-ngx-modal&gt; 标签,应该是: &lt;/ext-ngx-modal&gt;

    3. Plunker

    我不知道如何正确引用 plunker 中的导入文件,所以我将您的组件移到了一个文件中...

    这是一个有效的PLUNKER

    【讨论】:

    • 是的,我已经剪切 + 粘贴了 ModalModule,需要使用“Modal”。不错,我的代码盲了!
    • 对于奖励积分,任何人都可以了解为什么这里的示例中的属性 isOpened 没有改变...plnkr.co/edit/rTJsMq7XHg4zLmIjUARD?p=preview
    • @PaulThomas 可能是因为您打开的是modal ((click)="myModal.open()") 的实例,而不是ext-ngx-modal。所以你的ext-ngx-modal 确实没有打开(并且总是说false)。
    • 是的,当我将处理程序放在我的 ext-modal 上时,它会引发错误。我现在为此创建了一个单独的案例。 stackoverflow.com/questions/44704437/…
    猜你喜欢
    • 2018-01-18
    • 2018-02-15
    • 2019-06-23
    • 2016-10-31
    • 2019-07-03
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    相关资源
    最近更新 更多