无法在视角6中显示类属性值

时间:2018-07-05 12:20:28

标签: javascript angular

我试图从服务中获取用户位置并将其显示在组件视图中。我很可能将服务中的位置获取到组件中。但是当我在视图中显示它时,它显示为未定义。 下面是代码。

服务:

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"

2 个答案:

答案 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"]);