javascript 中的 Angular2 递归模板
Angular2 Recursive Templates in javascript
我一直在尝试按照本教程创建一个嵌套的树视图。本教程是打字稿,而我正在尝试使用 Angular2 在 javascript 中做类似的事情。
在打字稿代码中,树视图组件如下所示:
import {Component, Input} from 'angular2/core';
import {Directory} from './directory';
@Component({
selector: 'tree-view',
templateUrl: './components/tree-view/tree-view.html',
directives: [TreeView]
})
export class TreeView {
@Input() directories: Array<Directory>;
}
在 JavaScript 中,应该转换为:
TreeView = ng.core
.Component({
selector: 'tree-view',
templateUrl: './components/tree-view/tree-view.html',
directives: [TreeView],
inputs: ['directory'],
})
.Class({
constructor: function() {
},
});
但是,javascript 会抛出以下错误:
异常:视图上的意外指令值"未定义" 组件 '函数 () {'
我相信这是因为我在完全定义 TreeView 之前调用指令:[TreeView]。如果我删除该指令行,错误就会消失。但是,我不知道为什么它会在打字稿而不是 javascript 中工作,如果打字稿只是编译为 javascript。这是从打字稿代码编译的javascript。我不确定我错过了什么。任何帮助将不胜感激。
这个问题
已经被回答了几次
首先,课程不是吊装的。引用自MDN
函数声明和类声明之间的重要区别是,函数声明被提升,而类声明不是。您首先需要声明您的类,然后访问它 [...]
转发文档说
例如,当声明了我们需要引用用于 DI 目的的令牌但尚未定义时,使用 forwardRef。当我们在创建查询时使用的令牌尚未定义时,也会使用它。
因此,只需向代码添加forwardRef
一样简单
directives : [ng.core.forwardRef(function() { return TreeView; })]
您可以阅读有关此主题的更多信息
- 角度 2 中的前向引用
- 来自StackOverflow的其他问题
相关文章:
- 数组在递归方法中设置为null
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 递归使用 eval() 是检查程序执行的好方法吗?
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 递归深度比较
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- 递归函数中断
- 如何递归地获取嵌套对象中所有子对象的列表
- JavaScript 素数搜索无限递归
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 递归|两个函数名
- 有没有一种方法可以在Javascript中进行可变递归currying
- 如何对不同的表递归使用以下代码
- 将jQuery对象传递到setTimeout递归函数中
- 有更好的方法吗?(递归解析HTML unicode实体)
- 为什么递归生成器函数没有't在ES2015工作
- 使用递归实现加性持久性
- 递归显示n元树
- 递归模板Angular2
- javascript 中的 Angular2 递归模板