Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 从一个对象创建一个可观测值以及一个起始值_Angular_Rxjs_Observable_Rxjs5 - Fatal编程技术网

Angular 从一个对象创建一个可观测值以及一个起始值

Angular 从一个对象创建一个可观测值以及一个起始值,angular,rxjs,observable,rxjs5,Angular,Rxjs,Observable,Rxjs5,我正在创建一个angular v4应用程序。我有以下数据 currentCount={ name:'myName', count:0 }; 在此,用户将使用相关数据更改上述对象。我想从这个对象中创建一个可观察的对象,这样每当有变化时,我就可以保存(处理)数据。 另外,我希望在订阅observable时传递默认数据 因为我是RXjs的新手,所以我觉得很失落 非常感谢您的帮助。默认情况下,RxJS 5不可能做到这一点,因为它无法观察对象属性。以前有,但现在已经停止使用了,所以你不应该使用它 不过(

我正在创建一个angular v4应用程序。我有以下数据

currentCount={
name:'myName',
count:0
};
在此,用户将使用相关数据更改上述对象。我想从这个对象中创建一个可观察的对象,这样每当有变化时,我就可以保存(处理)数据。 另外,我希望在订阅observable时传递默认数据

因为我是RXjs的新手,所以我觉得很失落


非常感谢您的帮助。

默认情况下,RxJS 5不可能做到这一点,因为它无法观察对象属性。以前有,但现在已经停止使用了,所以你不应该使用它

不过(有点自我宣传),我是将RxJS 5与对象结合在一起并允许您创建可观察数据结构的软件包的作者(我计划将其用于一些实验性的React+Redux应用程序,您可以通过更改对象属性来操作
状态

例如,你可以这样使用它:

从'rxjs ds'导入{observeObject};
常量原始={
姓名:'我的姓名',
计数:0
};
//从“原始”创建可观察的对象`
const proxied=新的可观察对象(原始);
const currentCount=proxied.proxy;
const events=proxied.events;
//创建更新对象属性时通知我的观察者
events.start.subscribe(console.log);
//请注意,我实际上是在修改'proxied.proxy',而不是原始对象
currentCount['name']='Rincewind';
currentCount['name']='Twoflower';
currentCount['count']=42;
您可以在此处看到实时演示:

这将打印到控制台的以下输出:

{property:“name”,oldValue:“myName”,newValue:“Rincewind”,target:{…}
{属性:“名称”,旧值:“Rincewind”,新值:“Twoflower”,目标:{…}
{属性:“计数”,旧值:0,新值:42,目标:{…}

默认情况下,RxJS 5不可能做到这一点,因为它无法观察对象属性。以前有,但现在已经停止使用了,所以你不应该使用它

不过(有点自我宣传),我是将RxJS 5与对象结合在一起并允许您创建可观察数据结构的软件包的作者(我计划将其用于一些实验性的React+Redux应用程序,您可以通过更改对象属性来操作
状态

例如,你可以这样使用它:

从'rxjs ds'导入{observeObject};
常量原始={
姓名:'我的姓名',
计数:0
};
//从“原始”创建可观察的对象`
const proxied=新的可观察对象(原始);
const currentCount=proxied.proxy;
const events=proxied.events;
//创建更新对象属性时通知我的观察者
events.start.subscribe(console.log);
//请注意,我实际上是在修改'proxied.proxy',而不是原始对象
currentCount['name']='Rincewind';
currentCount['name']='Twoflower';
currentCount['count']=42;
您可以在此处看到实时演示:

这将打印到控制台的以下输出:

{property:“name”,oldValue:“myName”,newValue:“Rincewind”,target:{…}
{属性:“名称”,旧值:“Rincewind”,新值:“Twoflower”,目标:{…}
{属性:“计数”,旧值:0,新值:42,目标:{…}

如果你认为你要找的是:

从'rxjs/BehaviorSubject'导入{BehaviorSubject};
const subc=新行为主体(“yourValueHere”);
可观测的obs=subc.asObservable();
obs.subscribe(x=>console.log(x));
//日志初始值
sub.next('nextValue');
//记录下一个值

行为主体继承自Observable和Observer。您可以在存储subject时从函数/类返回一个observable,并在值发生变化时调用next。这将发出下一个值,所有订阅者将再次执行。

如果您认为您要查找的是:

从'rxjs/BehaviorSubject'导入{BehaviorSubject};
const subc=新行为主体(“yourValueHere”);
可观测的obs=subc.asObservable();
obs.subscribe(x=>console.log(x));
//日志初始值
sub.next('nextValue');
//记录下一个值

行为主体继承自Observable和Observer。您可以在存储subject时从函数/类返回一个observable,并在值发生变化时调用next。这将发出下一个值,所有订阅服务器都将再次执行。

您可能需要查看
行为主题。看看这是否符合你的目的。如果没有,澄清它没有做什么你想要的会有所帮助。yes@bygrace,它解决了我的可观测数据的初始值。但是我如何为一个对象创建一个可观察的对象呢?也许这会减轻那种失落的感觉:@krv RxJs是关于创建可观察的流而不是可观察的对象。一些框架已经创建了可观察的对象,但事实并非如此。这不像你有一个对象,你更新了它的一个属性,然后观察者得到通知。流更像是一个管道,由您构造并向下发送消息。在此过程中,观察者可以获取值,操作员可以更改或过滤出值。只有具有该主题的人才能发送新消息。行为主体就像一个管道,里面已经有一条消息。还有很多,但我希望这能澄清问题。你可能想研究一个
行为主题
。看看这是否符合你的目的。如果没有,澄清它没有做什么你想要的会有所帮助。yes@bygrace,它解决了我的可观测数据的初始值。但是我如何为一个对象创建一个可观察的对象呢?也许这会减轻那种失落的感觉:@krv RxJs是关于创建可观察的流而不是可观察的对象。一些框架已经创建了可观察的对象,但事实并非如此。这不像你有一个对象,你更新了它的一个属性,然后观察者得到通知。流更像是一个管道,由您构造并向下发送消息。在此过程中,观察者可以获取值,操作员可以更改或过滤出值。只有那些