小编Ars*_*yuk的帖子

ng serve --prod throws"ERROR TypeError:(void 0)不是函数"

所以当在Angular-CLI app中遇到麻烦时.

这是发生的事情: ng serve,不ng serve --aot产生例外,一切正常.只ng serve --prod在浏览应用程序时运行休息时间.

错误TypeError:(void 0)不是函数

正在寻找答案,并发现这些不是,所以我在应用程序中的每个属性之前写了'public'并检查提供程序中是否有函数调用,但没有任何改变.

接下来我尝试用--aot旗帜运行它并且工作得很好,但是在--prod出现相同错误时仍然崩溃.

它在runnig登录过程中完全崩溃,这是:

  • 使用登录名和密码数据发送http POST
  • 如果请求解析,则调度ngRx-Store自定义登录事件(简单标志)
  • 然后router.navigateByUrl到另一个页面

奇怪的是,我到处都有类似的过程,但它在确切的位置崩溃了.

可以请有人给我一些信息,我应该在哪下挖?干杯!


更新:我在登录过程的每个部分都在切断代码,然后用--prod它构建它,结果发现来自@ angular/material的MatDialog产生了错误.在MatDialog登录组件使用afterClosed()挂钩到其父级解析后触发登录,并以某种方式产生异常.

因此,触发弹出窗口的父级是HeaderComponent,其中包含方法:

    openLoginDialog(): void {
        this.authService.login();
         const dialogRef = this.dialog.open(LoginDialogComponent);
         dialogRef.afterClosed().subscribe(result => {
           if (result) {
             this.authService.login();
           }
        });
      }
Run Code Online (Sandbox Code Playgroud)

在LoginDialogComponent里面是简单解决的方法:

    login(login, password) {
      this.authService.tryLogin(login, password).subscribe(data => {
        this.dialogRef.close(true);
      });
    }
Run Code Online (Sandbox Code Playgroud)

在我删除MatDialog后,另一个单词摆脱了项目中唯一的弹出窗口,错误消失了.我已经创建了另一个具有自己的Login表单路由的组件,但仍然认为删除整个工作模块是因为构建错误不是解决方案.

我的package.json:

    "dependencies": {
        "@angular/animations": "^5.0.2",
        "@angular/cdk": "^5.0.0-rc.1",
        "@angular/common": "^5.0.0",
        "@angular/compiler": "^5.0.0",
        "@angular/core": "^5.0.0",
        "@angular/flex-layout": …
Run Code Online (Sandbox Code Playgroud)

typeerror aot angular-cli angular

14
推荐指数
1
解决办法
2739
查看次数

标签 统计

angular ×1

angular-cli ×1

aot ×1

typeerror ×1