Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在Nativescript中获取对象形式ObservalArray_Angular_Typescript_Nativescript - Fatal编程技术网

Angular 在Nativescript中获取对象形式ObservalArray

Angular 在Nativescript中获取对象形式ObservalArray,angular,typescript,nativescript,Angular,Typescript,Nativescript,我有一个服务类,它有一系列任务,如下所示: import { ObservableArray, ChangedData } from 'tns-core-modules/data/observable-array/observable-array'; quests: ObservableArray<Quest>; 在另一个类中,我订阅该数组的更改事件: this.myService.quests.on(ObservableArray.changeEvent,(args:Chang

我有一个服务类,它有一系列任务,如下所示:

import { ObservableArray, ChangedData } from 'tns-core-modules/data/observable-array/observable-array';

quests: ObservableArray<Quest>;
在另一个类中,我订阅该数组的更改事件:

this.myService.quests.on(ObservableArray.changeEvent,(args:ChangedData<Quest>) => {
    console.log(args.object);
    let quest: Quest = args.object; // can not cast to quest
});
this.myService.quests.on(observeArray.changeEvent,(args:ChangedData)=>{
console.log(args.object);
让quest:quest=args.object;//不能强制转换到quest
});
在日志中,我可以看到我的数据在
ChangeData
中。但我却无法将这一点抛回到我的目标上

我怎样才能做到这一点


谢谢

我为您找到了解决方案。问题是打字。它不会显示您需要的属性。因此,只需将其设置为
any
,基本上您需要执行以下操作:

this.myService.quests.on(ObservableArray.changeEvent, (args: any) => {
  console.log(args.index);
  //the item which was added
  console.log(this.myService.quests.getItem(args.index));
  //now you can cast it
  let quest = <Quest>this.myService.quests.getItem(args.index);
  console.log(args.action); // Action (In this case "add")
});
结果如下:

JS: 0 //this is index
JS: {
JS:   "name": "test1"
JS: }
JS: add //this is the action
JS: 1
JS: {
JS:   "name": "test2"
JS: }
JS: add

我为你找到了解决办法。问题是打字。它不会显示您需要的属性。因此,只需将其设置为
any
,基本上您需要执行以下操作:

this.myService.quests.on(ObservableArray.changeEvent, (args: any) => {
  console.log(args.index);
  //the item which was added
  console.log(this.myService.quests.getItem(args.index));
  //now you can cast it
  let quest = <Quest>this.myService.quests.getItem(args.index);
  console.log(args.action); // Action (In this case "add")
});
结果如下:

JS: 0 //this is index
JS: {
JS:   "name": "test1"
JS: }
JS: add //this is the action
JS: 1
JS: {
JS:   "name": "test2"
JS: }
JS: add

你试过
让quest=args.object
?Yes@DotNetDreamer我尝试了上述方法,并从
(args:ChangedData)=>
中删除了键入内容,使其
(args)=>
不工作@DotNetDreamer
args
如果类型为
EventData
对象
属性为引发事件的类型元素。因此,您无法从其对象中获取
任务
。因此,只有更改检测才会通知您。您可以在这里看到这一点,您是否尝试过
let quest=args.object
?Yes@DotNetDreamer我尝试了上述方法,并从
(args:ChangedData)=>
中删除了键入内容,使其
(args)=>
不工作@DotNetDreamer
args
如果类型为
EventData
对象
属性为引发事件的类型元素。因此,您无法从其对象中获取
任务
。因此,只有更改检测才会通知您。你可以在这里看到这个,非常感谢你的努力,我稍后会试试这个@NicoS.很高兴它能帮上忙非常感谢你的努力,我稍后会试试这个@尼科斯,很高兴这有帮助