javascript - 组件初始化无限循环 - Angular 2 JSPM

标签 javascript angular jspm

这是完整的错误。

RangeError: Maximum call stack size exceeded
at Injector._instantiate (http://localhost:8000/build.js:36366:63)
at Injector._instantiateProvider (http://localhost:8000/build.js:36244:23)
at Injector._new (http://localhost:8000/build.js:36234:21)
at InjectorInlineStrategy.instantiateProvider (http://localhost:8000/build.js:35998:30)
at ElementDirectiveInlineStrategy.init (http://localhost:8000/build.js:35106:20)
at new AppElement (http://localhost:8000/build.js:34800:24)
at viewFactory_constructor0 (viewFactory_constructor:74:26)
at viewFactory_constructor0 (viewFactory_constructor:76:1)
at viewFactory_constructor0 (viewFactory_constructor:76:1)
at viewFactory_constructor0 (viewFactory_constructor:76:1) <app id="NG2_UPGRADE_0_app_c0">

这是我的源文件。

import 'reflect-metadata'

import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser'

console.log('Files have started being compiled and infinite loop has begun');

var TodoCmpTest = 
Component({
  selector: 'todo-cmp'
})
.View({
  template: `<h1>TodoCmpTest</h1>`
})
.Class({
  constructor: function(){
    console.log('hello');
  }
});


var AppComponent = 
Component({
  selector: 'app',
})
.View({
  template: `
  <div>
  <h1> Hello World </h1>
  <todo-cmp></todo-cmp>
  </div>
  `,
  directives: [TodoCmpTest]
// directives: []
})
.Class({
  constructor: function () {}
});  

bootstrap(AppComponent);

它一遍又一遍地恢复 TodoCmpTest。

如果您交换这两行它会工作,但不会加载 TodoCmpTest。 指令:[TodoCmpTest] //指令:[]

您可以通过执行以下操作重现此错误...

1. 克隆 https://github.com/danielrasmuson/Angular2HelloWorld-StackOverflow 2. 使用节点 v5.4.0 3.jspm安装 4. npm 安装 5. npm 启动

最佳答案

这似乎是 beta 1 中的 angular 2 问题, 我用 angular 2 beta 0 尝试了你的 repo,它工作正常,没有循环。 我建议你坚持使用 beta 0,直到他们修复它。 我不知道 jspm,所以这是我测试它的方法:(可能不需要这里的所有内容,只是编辑 package.json -> 删除 -> 并重新安装继续安装 angular beta 1 版本)

将 package.json angular2 依赖项编辑为:

"jspm": {
    "dependencies": {
      "angular2": "npm:angular2@2.0.0-beta.0",
      "reflect-metadata": "npm:reflect-metadata@^0.1.3"
    },

然后我跑

rm -rf jspm_packages/npm/angular2@2.0.0-beta.1
jspm install npm:angular2@2.0.0-beta.0  
npm start

关于javascript - 组件初始化无限循环 - Angular 2 JSPM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755607/

相关文章:

javascript - Karma + JSPM + Typescript - 未找到 '.ts.js'

javascript - 无法在页面中获取此 fiddle

javascript - 当 "game"重新启动时定时器没有重置

Angular 附加组件到各个选项卡

angular 7 单元测试抛出 env.configure is not a function\nat 并挂起

jquery - SystemJS:为什么在导入 jquery 时出现错误 jquery_1.default 不是函数

typescript - 设置 Aurelia、TypeScript 和 Asp.Net Core RC2

javascript - bootstrap 和 jquery 验证冲突

javascript - 如何让鼠标右键纯死?

node.js - 使用 Node 进行图像处理