我试图从服务中获取用户位置并将其显示在组件视图中。我很可能将服务中的位置获取到组件中。但是当我在视图中显示它时,它显示为未定义。 下面是代码。
服务:
enteredLocationName = new Subject<string>();
sendEnteredLocationName(location) {
this.enteredLocationName.next(location);
}
getEnteredLocationName() {
return this.enteredLocationName.asObservable();
}
Component-TS:
export class RestaurantSearchComponent implements OnInit {
enteredLocationName: Subscription;
enteredLocation:string;
constructor(private shareDataService: ShareDataService) { }
ngOnInit() {
this.getEnteredLocationName();
}
getEnteredLocationName(){
this.enteredLocationName =
this.shareDataService.getEnteredLocationName().subscribe(resp => {
this.enteredLocation = resp;
});
}
ngOnDestroy() {
this.enteredLocationName.unsubscribe();
}
}
组件视图:
input [value]="enteredLocation" type="text" class="form-control"
placeholder="Selected Location"
答案 0 :(得分:1)
绑定ngModel
而不是value
。
由于在初始阶段,value
绑定了未定义的值,因此在获取值后它不会更新该值,而ngModel
会更新。
否则,您可以尝试使用async
管道。如果您想使用价值。
<input [value]="enteredLocation | async" type="text" class="form-control"
placeholder="Selected Location">
PS:我不确定async
是否可以使用。
答案 1 :(得分:0)
当您使用Subject时,它不保存任何值,只要您更改其值,它便会调用订阅。因此,其持久值是不确定的。
您应该改用BehaviorSubject,它可以保存持久值。
angular.module("CombineModule", ["app1", "app2"]);