使用库时,由于构建模式,ngOnInit不起作用

时间:2019-04-09 09:14:30

标签: angular

如果我使用以下配置创建一个库,请将其安装在应用程序端,然后继承并使用它, 如果ng build --prod=true,将不会调用ngOnInit。 如果ng build,则调用ngOnInit

  • Angular:6.1.1
  • Angular CLI:6.2.9

如果您退出库并将库源放入应用程序中,它将起作用。 但是,我想使其成为一个库,因为我想共同使用它。

  • library-sample-base.ts(库源)
export abstract class LibrarySampleBase implements OnInit {
    public ngOnInit() {
        this.InitPage();
    }
}
  • library-sample.ts(库源)
export abstract class LibrarySample extends LibrarySampleBase {
    // no exist ngOnInit()
}
  • sample.component.ts(应用程序源)
@Component({
    selector: 'app-sample',
    templateUrl: './sample.component.html',
    styleUrls: ['./sample.component.css']
})
export class Sample extends LibrarySample {
    InitPage() {
        // processing
    }
}

即使ngOnInit时也如何呼叫ng build --prod=true? 另外,如果您有任何错误信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

这对我有用:

  • library-sample-base.ts
    import { OnInit } from '@angular/core';
    export abstract class LibrarySampleBase implements OnInit {
        public ngOnInit() {
            this.initPage();
        }
        initPage() {
            console.log('Hi');
        }
    }
    export abstract class LibrarySample extends LibrarySampleBase {}
  • app.component.ts
    import { Component } from '@angular/core';
    import { LibrarySample } from './library-sample-base.ts';

    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.scss']
    })
    export class AppComponent extends LibrarySample {

      initPage() {
        console.log('Bye!');
      }
    }

Bye 在控制台中显示为日志。如果我评论了AppComponent中的initPage(),则记录为 Hi 。所以我认为这可以预期。

  • Angular:7.2.12
  • Angular CLI:7.3.8

我正在使用ng serve --prod=true进行尝试。