2016-10-31 79 views
1

场所我有一个基类:角2继承超级()注射的WebPack

import {DomSanitizer} from '@angular/platform-browser'; 

export class Base { 
    constructor(protected sanitizer: DomSanitizer){ 
    } 

    //.....lots more stuff 
} 

此类由下列派生类扩展:

import {DomSanitizer} from '@angular/platform-browser'; 

export class ChildClass extends Base{ 
    constructor(protected sanitizer: DomSanitizer) { 
     super(sanitizer); 
    } 
} 

我的模块被导入BrowserModule

我使用的WebPack编译和我在运行时收到以下错误:

Uncaught ReferenceError: platform_browser_1 is not defined -- app.bundle.js:58139

app.bundle.js是的WebPack输出,我可以在编译源确实platform_browser_1不可用内看到那块。

我不会以任何有目的的方式分裂我的应用程序。有什么我不知道如何继承可能会导致Webpack错误地不导入所需的类或什么?

这绝对是一个Webpack问题,因为如果我删除DomSanitizer的基于继承的usave,并直接将它放入子组件中,它就可以正常工作。

为了澄清,platform-browser是从中导入DomSanitizer的模块。

有没有人有任何想法是怎么回事? 任何帮助表示赞赏。

+0

您的代码没有针对Base的导入,无法解释发生了什么(该问题与继承或超级无关)。这也意味着实际的代码与您展示的代码不同。 Webpack配置和块没有任何已知的信息。一个可行的抢劫者可能可以帮助。 – estus

+0

是的,试图去除噪音。基类被导入(否则你会得到一个不同的错误)。我会尝试添加更多... – dudewad

回答

0

好吧,所以基本上,我尝试了很多东西,看看如何让Webpack输出正确的代码。我注意到Webpack会和其他模块一起在传输块中输出一个变量: var platform_browser_1 = ...

但是,在我的基类的块中,根本没有输出它。所以,我认为一定有一个理由忽略它。由于这些块被注释了,我认为可能向基类添加一个@Component注解是可行的,而且它也可以。所以,我去的:

export class Base { ....

要:

@Component({}) //empty component decorator 
export class Base { 
    //.... 
} 

问题解决了,不管是什么原因。不幸的是,我没有解释为什么,但是如果任何人想要调查,可能是因为@Component根据我对NG文档网站的研究提供元数据。

希望这可以帮助别人!