我已经使用此处找到的开发工具包开始了一个项目:https : //github.com/datatypevoid/ng2-mean-webpack。一切似乎都工作正常,除非当我创建一个带有参数属性的新类时(如此处的官方Typescript文档所示:https ://www.typescriptlang.org/docs/handbook/classes.html ),我会收到一条错误消息控制台中的消息说:
ORIGINAL EXCEPTION: No provider for Number!
这是我的课:
@Component({
selector: 'grid-tile',
template: require('./grid-tile.component.html'),
styleUrls: [require('!style!css!sass!./grid-tile.component.scss')],
providers: [],
directives: [],
pipes: []
})
export class GridTile extends Tile {
constructor(private x:number, private y: number) {
super();
}
}
这是我创建实例的方式:
var tile = new GridTile(3,4);
tiles.push(tile);
当我进一步开发时,我将非常感谢为该问题找到解决方案。我已经按照《 Angular2英雄之旅》教程学习了,参数属性似乎可以正常工作,所以我想知道它是否与开发套件有关,或者仅仅是我要传递的东西。.Angular2对我来说是全新的,所以这可能是我的错。谢谢您的帮助。
Angular 2使用MVC模式:用装饰的类@Component
等效于Controller。这意味着:
如果不使用依赖注入,则不能向构造函数提供参数(这会产生错误);
该类不应实例化,而必须在引导时,通过路由器或在Angular中通过指令将其作为子代传递时调用。
如果您仔细分析了《英雄之旅》,您会发现您创建了一个服务,这是一个可注入的类:
@Injectable()
export class HeroService {
...
}
}
然后,将其作为注入provider
(在同一组件或父组件中),并通过将其传递给组件的构造函数进行实例化:
@Component({
selector: 'my-app',
...
providers: [HeroService]
})
export class AppComponent implements OnInit {
...
constructor(private heroService: HeroService) { }
...
}
这样,组件和所有子组件都将继承对注入的类的引用。
在您的示例中,您有两个变量作为参数,并且由于不与组件中的任何提供程序相对应而产生错误。
您可以在这里阅读更多内容。
或者,开始:http : //victorsavkin.com/post/118372404541/the-core-concepts-of-angular-2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句