Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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 角5值的持久性_Angular_Typescript - Fatal编程技术网

Angular 角5值的持久性

Angular 角5值的持久性,angular,typescript,Angular,Typescript,我如何使服务返回给我的值在我的所有方法detailproduct.Id\u Product=form.Id\u Product.Id中保持不变,分配给它的值只在该上下文中保持不变,但如果我在外部调用它,它就没有定义。,this.serviceProduct.postProduct肯定是一个异步操作,返回一个可观察的。当执行console.log时,对subscribe的调用尚未执行,因此您当然不会得到值 如果要等待该值可用,必须确保所有代码都是从调用subscribe的内部执行的,在组件类的开头

我如何使服务返回给我的值在我的所有方法detailproduct.Id\u Product=form.Id\u Product.Id中保持不变,分配给它的值只在该上下文中保持不变,但如果我在外部调用它,它就没有定义。

this.serviceProduct.postProduct
肯定是一个异步操作,返回一个可观察的
。当执行
console.log
时,对
subscribe
的调用尚未执行,因此您当然不会得到值


如果要等待该值可用,必须确保所有代码都是从调用
subscribe

的内部执行的,在组件类的开头创建变量,并使用此更新函数中的变量

比如说-

if (form.Id_Product.id == undefined) {
    product.NameProduct = form.Id_Product;
    this.serviceproduct.postProduct(product).subscribe((result: Product) => {
        form.Id_Product = result;
        product = form.Id_Product;
        detailproduct.Id_Product = form.Id_Product.id;
    });

    // Here the value no longer comes out, as I do for
    // the value continues to persist
    console.log(detailproduct.Id_Product);
}

另一种情况是,subscribe在打印console.log语句后获取值,因为这是异步行为。因此,您的值已初始化,但未记录

其中一个可能的解决方案是将该价值注入到您的服务中。提供程序:[UserService,{provide:APP_CONFIG,useValue:HERO_DI_CONFIG}],可能与
test: string;

ngOnInit() {
   this.test = 'new value';
}