我有一个页面组件,其格式为FormBuilder
:
public adForm: FormGroup = this.fb.group({
questions: this.fb.array([])
});
我将questions
传递给<questions>
组件:
<questions [questions]="adForm.get('questions')"></questions>
其中有一个@Input() questions: FormArray;
并使用此模板:
<StackLayout orientation="vertical">
<!-- If I comment out listview then it doesn't throw the error -->
<ListView [items]="questions">
<ng-template let-question="item">
<Label [text]="question.model"></Label>
</ng-template>
</ListView>
<Button class="btn btn-md btn-primary" text="Add question" (tap)="addQuestion()"></Button>
</StackLayout>
我面临的问题是ListView
位会引发此错误:
TypeError: Cannot read property 'Symbol' of undefined
如果我对该部分发表评论,那么它就不会抛出错误。
我知道它与questions
表单数组有关,但我还没有弄清楚是什么。它被定义为不应该是与获取undefined
而不是空数组的事情有关的问题。
请注意,此错误直接在组件init上引发。我已在questions
中记录了ngOnInit
,但未定义。
我做错了什么?
答案 0 :(得分:1)
我完全忘记了如果我传递一个表单数组,我实际上并没有获得原始值,即数组。所以在ListView中我要么必须questions.value
或{{1}为了循环它们。
我希望将来可以帮助别人。
答案 1 :(得分:1)
只是为了在样板上添加一些内容,我遇到了这个问题以及更简单的列表,尽管我使用的组件是telerik的RadListView,它仍然基于nativescript的核心ListView
相关HTML是:
n = 1
s
0 1
1 2
2 3
3 5
4 7
5 10
6 13
7 16
8 20
dtype: int64
m = ~s.diff().fillna(0).le(n)
v = s.groupby(m.cumsum()).apply(lambda x: x.tolist()).tolist()
v
[[1, 2, 3], [5], [7], [10], [13], [16], [20]]
我也遇到了这个错误,但是从控制台来看,检测问题并不容易:
<GridLayout tkExampleTitle tkToggleNavButton>
<RadListView class="list-group" ng-if="!isLoading" [items]="getAsyncList">
<ng-template tkListItemTemplate let-item="item">
<StackLayout class="list-group-item" orientation="vertical">
<Label class="list-group-item-heading" [text]="item.name"></Label>
</StackLayout>
</ng-template>
</RadListView>
</GridLayout>
所以,在经历了一个疯狂的家伙约30分钟之后,我发现这个问题比我期待的要容易得多。
JS: ERROR TypeError: Cannot read property 'Symbol' of undefined
JS: ERROR CONTEXT [object Object]
参数应该是getter的结果,但我确实在我的组件中定义了一个具有相同名称的函数:
items
所以它可能将函数引用到列表而不是getter,因此我不得不将其更改为:
public getAsyncList() {
return this.ListViewCollection;
}
(请注意public get getAsyncList() {
return this.ListViewCollection;
}
)。
有点难以追查问题但嘿,无论如何这是我的错:P。