Angular2 - 共享服务的实现
Angular 2 - Implementation of shared services
我正在尝试实施我在 Stack Overflow 中找到的解决方案,但遇到困难。我有一个服务和一个组件,但在实现上有些地方不正确。
错误:类型错误:无法读取未定义的 属性 'next'
什么可能是错的或遗漏的?还有什么东西不见了吗?
同样在我的终端 window 上,我收到了这个错误,但它没有反映在我的浏览器控制台上:错误 TS1005:'=>' expected.
import {Injectable} from 'angular2/core';
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';
@Injectable()
export class GlobalService {
data: any;
dataChange: Observable<any>;
constructor() {
this.dataChange = new Observable((observer:Observer) { // this is the TS1005 error.
this.dataChangeObserver = observer;
});
}
setData(data:any) {
this.data = data;
this.dataChangeObserver.next(this.data); //Line of the critical error (next)
}
}
这是使用服务的组件....(我将只放置相关行)
import {GlobalService} from "../../../global.service";
import(...)
@Component({
providers: [GlobalService],
template: `<p>{{myData}}<>/p><span (click)="addTag(1, 'test')">Add more</span>`
});
export class MyComponent {
addTag (id,desc){
this._global.setData({ attr: 'some value' });
}
}
constructor(private _global: GlobalService) {
}
那么,有什么问题 and/or 缺少让这个简单的组件显示结果并添加新元素并可观察到的?我以前从未实现过 observables。
你的代码不是很清楚,所以很难理解。仍然试图以这种方式帮助你。检查并告诉我它是否不起作用。
...
import {Injectable,EventEmitter,Output} from 'angular2/core';
@Injectable()
export class GlobalService {
data: any;
@Output dataChangeObserver: EventEmitter=new EventEmitter();
constructor() {
});
setData(data:any) {
this.data = data;
this.dataChangeObserver.emit(this.data);
return this.dataChangeObserver;
}
}
export class MyComponent {
constructor(private _global: GlobalService) {
}
addTag (id,desc){
this._global.setData({ attr: 'some value' })
.subscribe((res)=>{this.myData=res},
err=>console.log(err), //removed dot
()=>console.log('recived data') //removed dot
);
}
}
我正在尝试实施我在 Stack Overflow 中找到的解决方案,但遇到困难。我有一个服务和一个组件,但在实现上有些地方不正确。
错误:类型错误:无法读取未定义的 属性 'next' 什么可能是错的或遗漏的?还有什么东西不见了吗? 同样在我的终端 window 上,我收到了这个错误,但它没有反映在我的浏览器控制台上:错误 TS1005:'=>' expected.
import {Injectable} from 'angular2/core';
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';
@Injectable()
export class GlobalService {
data: any;
dataChange: Observable<any>;
constructor() {
this.dataChange = new Observable((observer:Observer) { // this is the TS1005 error.
this.dataChangeObserver = observer;
});
}
setData(data:any) {
this.data = data;
this.dataChangeObserver.next(this.data); //Line of the critical error (next)
}
}
这是使用服务的组件....(我将只放置相关行)
import {GlobalService} from "../../../global.service";
import(...)
@Component({
providers: [GlobalService],
template: `<p>{{myData}}<>/p><span (click)="addTag(1, 'test')">Add more</span>`
});
export class MyComponent {
addTag (id,desc){
this._global.setData({ attr: 'some value' });
}
}
constructor(private _global: GlobalService) {
}
那么,有什么问题 and/or 缺少让这个简单的组件显示结果并添加新元素并可观察到的?我以前从未实现过 observables。
你的代码不是很清楚,所以很难理解。仍然试图以这种方式帮助你。检查并告诉我它是否不起作用。
...
import {Injectable,EventEmitter,Output} from 'angular2/core';
@Injectable()
export class GlobalService {
data: any;
@Output dataChangeObserver: EventEmitter=new EventEmitter();
constructor() {
});
setData(data:any) {
this.data = data;
this.dataChangeObserver.emit(this.data);
return this.dataChangeObserver;
}
}
export class MyComponent {
constructor(private _global: GlobalService) {
}
addTag (id,desc){
this._global.setData({ attr: 'some value' })
.subscribe((res)=>{this.myData=res},
err=>console.log(err), //removed dot
()=>console.log('recived data') //removed dot
);
}
}