emp*_*emp 6 observable angular2-routing angular
我正在使用Angular2 RC5并@angular/router使用一个简单的router-outlet元素.我有一个Observable在视图中正常工作,但是当你进行页面刷新(F5或CTRL-F5)时它不起作用.我在Chrome(最新)和IE11(可能还有其他浏览器)中都有这个.目前我有一个解决方法,但我不明白为什么我的更改没有自动反映在视图中.
该项目相当大,所以试图在这里尽量减少它:
在MyService.ts中
@Injectable()
export class MyService {
initialValue: MyObject = new MyObject(); // actually I read this from local storage...
_information: BehaviorSubject<MyObject> = new BehaviorSubject(this.initialValue);
get obsMyObj(): Observable<MyObject> {
return this._information.asObservable();
}
myServiceFunction() {
return this.http.get(`api/myUrl`)
.map(this.extractMyInfo);
}
extractMyInfo = (res: Response): MyObject {
let body = res.json();
var myObject = new MyObject().mapAllProperties(body);
this._information.next(myObject);
return myObject;
}
}
Run Code Online (Sandbox Code Playgroud)
在MyComponent.ts中:
@Component({
selector: '[header]',
templateUrl: 'app.component.header.html'
})
export class HeaderComponent implements OnInit {
constructor(private myService: MyService) { }
myObject: MyObject = new MyObject();
ngOnInit() {
this.myService.obsMyObj.subscribe(
(data) => {
this.myObject = data;
});
}
}
Run Code Online (Sandbox Code Playgroud)
在MyView.html中
<div>
<img [src]="myObject?.picture"> <!-- this always works, I see the picture after page refresh -->
<p>{{myObject?.prop1 }}</p> <!-- this does not work after page refresh -->
</div>
Run Code Online (Sandbox Code Playgroud)
另一个组件执行实际的服务调用myServiceFunction,这就是我创建一个observable来显示它的原因MyComponent.ts.
它不是this.myObject = data手动使用和分配属性,而是适用于每个页面刷新...
this.myObject.prop1 = data.prop1;
this.myObject.prop2 = data.prop1;
Run Code Online (Sandbox Code Playgroud)
调试时,将调用subscribe方法,其中包含初始状态和页面刷新的正确数据.
我尝试直接绑定observable而不是使用组件中的对象.
我尝试使用异步管道.
也许你的问题来自于ngOnInit你的MyComponent。您可以尝试订阅this.myService.obsMyObj()而不是 吗this.myService.obsMyObj?
ngOnInit() {
this.myService.obsMyObj().subscribe(
(data) => {
this.myObject = data;
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |