Nativescript-ui Radlistview 空指针错误

Posted

技术标签:

【中文标题】Nativescript-ui Radlistview 空指针错误【英文标题】:Nativescript-ui Radlistview Null pointer error 【发布时间】:2017-09-09 17:12:54 【问题描述】:

Radlistview 未呈现源数组。请帮我弄清楚我哪里出错了。这给了我空指针异常。我在下面的部分中包含了代码。

srtdetails.component.html

<GridLayout tkExampleTitle tkToggleNavButton>
    <RadListView [items]="source">
        <template tkListItemTemplate let-item="item">
            <ScrollView>
                <StackLayout orientation="vertical">

                <GridLayout class="srtgrid border" rows="auto" columns=" *, *, *">

                <Label class="srtlabel " row="0" col="0" textWrap="true" [text]="item.requestid" ></Label>

                <Label class="srtlabel  " row="1" col="1" textWrap="true" [text]="item.requestedon" ></Label>

                <Label class="srtlabel " row="2" col="2" textWrap="true" [text]="item.requesttype" ></Label>

               </GridLayout>
            </StackLayout>              
          </ScrollView>               
        </template>
    </RadListView>
</GridLayout> 

strdetails.component.ts

import  Component, ElementRef, OnInit, ViewChild  from "@angular/core";
...

@Component(
  selector: "vp-srt-list",
  moduleId: module.id,
  templateUrl: './srtdetails.component.html',
  styleUrls: ["./srtdetails.component.css"],
  providers: [LoginService,NativeScriptUIListViewModule]
)

export class SrtListComponent implements OnInit

public source: Array<any>;

constructor( private router: Router,
   private LoginService: LoginService,
   private routerExtensions: RouterExtensions)
  ngOnInit()
  this.source = this.LoadSrt();

 LoadSrt(): Array<any>
    if (getConnectionType() === connectionType.none) 
        alert("Oops!! looks like your device is not connected to the internet ");
        return;
           
        this.LoginService.getAssociatedRequest()
            .subscribe((response: Array<any>) => 
          //let data = JSON.stringify(response)
          this.source = response; 
          console.log ("Response: " +this.source);
          return this.source;

        ,          
        (error) =>  console.log("Error happened", error.message),
        () =>  console.log("srt is completed")
        return this.source;
       
    );         
  


login.service.ts

  getAssociatedRequest()
let headers = new Headers();
    return this.http.get(
     BackendService.requestUrl
  )
    .map((response) =>  

            return response.json(); 
              //  console.log("JSON BODY: ",JSON.stringify(body));
              
                )

    .catch(this.handleErrors);
  

【问题讨论】:

尝试将空数组的初始值赋予源属性(在组件的构造函数中或在初始化属性本身时) @NickIliev 试过了。仍然遇到同样的错误 【参考方案1】:

&lt;RadListView [items]="source"&gt; 交换为&lt;RadListView [items]="source" *ngIf="source"&gt;。这样,它在有数据之前不会渲染,并且会在源有数据时立即填充

【讨论】:

当我第一次尝试这个时,我花了一段时间才意识到这一点 如果你接受这个作为答案,其他人可以找到这个答案

以上是关于Nativescript-ui Radlistview 空指针错误的主要内容,如果未能解决你的问题,请参考以下文章

Nativescript Vue TypeError:无法读取未定义的属性“0”