在这里,在DynamicDatabase类中,我从服务器获取值并在console.log(this.rootLevelNodes) // folder-1 folder-2 folder-3 folder-4中获取,参见下面的代码,但我想要数组中的值。然后在this.route之外,我打印console.log(this.rootLevelNodes) // there I got null [] (this.rootLevelNodes) in function but I dont know why I got null result,但是在哪里,我也想要数组格式的结果,怎么可能看到我的下面的代码,并帮助我?
@Injectable()
export class DynamicDatabase {
rootLevelNodes: string[] = [];
constructor(private route : ActivatedRoute, private userService : UserService){}
upperFolderId;
urlOfFolder;
initialData(): DynamicFlatNode[] {
this.route.params.subscribe(params => {
this.upperFolderId = params['userid'];
this.urlOfFolder = params['url']+'/'+this.upperFolderId;
this.userService.getPatternMainFolder({'urlOfFolder' : this.urlOfFolder}).subscribe(
(data) => {
if(data != undefined && data != '' && data.payload != undefined && data.payload != ''){
for(var i = 0 ; i < data.payload.length ; i++){
this.rootLevelNodes = data.payload[i].folderName;
console.log(this.rootLevelNodes); // folder-1
folder-2
folder-3
folder-4
<-- this type result I got
// I want this type result
console.log(this.rootLevelNodes); // ['folder-1','folder-2','folder-3','folder-4']
}
}
}
)
});
console.log(this.rootLevelNodes); // [] --> Here I result got null array
// Here also I want this type result want
console.log(this.rootLevelNodes); // ['folder-1','folder-2','folder-3','folder-4']
return this.rootLevelNodes.map(name => new DynamicFlatNode(name, 0, true));
}发布于 2019-01-02 20:26:06
我会将单个函数分成两部分:
initialData() {
this.route.params.subscribe(params => {
this.upperFolderId = params['userid'];
this.urlOfFolder = params['url']+'/'+this.upperFolderId;
this.anotherFunction(this.urlOfFolder);
});
}
anotherFunction(data) {
this.userService.getPatternMainFolder({'urlOfFolder' : data}).subscribe(
(data) => {
if(data != undefined && data != '' && data.payload != undefined && data.payload != ''){
for(var i = 0 ; i < data.payload.length ; i++){
this.rootLevelNodes.push(data.payload[i].folderName);
console.log(this.rootLevelNodes);
}
}
return this.rootLevelNodes;
}
)
}发布于 2019-01-02 20:30:45
用this.rootLevelNodes.push(data.payload[i].folderName);代替this.rootLevelNodes = data.payload[i].folderName;
https://stackoverflow.com/questions/54006189
复制相似问题