Quan sát là không thể assigend, file package.json tôi giữLoại 'Quan sát <{}> ' là không thể chuyển nhượng để gõ vào góc 2
"angular2": "2.0.0-beta.17",
"systemjs": "0.19.24",
"es6-promise": "^3.0.2",
"es6-shim": "^0.35.0",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.6",
"zone.js": "0.6.12"
Vấn đề xảy ra khi thiết bị đầu cuối của tôi bắt đầu soạn thảo nó cho thấy tôi một errormessage
nhắn:
'\u001b[31mresources/assets/typescript/services/user.service.ts(25,5): \u001b[39merror TS2322: Type \'Observable<{}>\' is not assignable to type \'Observable\'.\n Type \'{}\' is not assignable to type \'User[]\'.\n Property \'length\' is missing in type \'{}\'.' }
trong thành phần dịch vụ của tôi this.loggedUser $ là không thể khởi tạo bởi Quan sát mới bên trong constructor và nó phá vỡ tất cả mọi thứ.
Đây là của tôi phần dịch vụ
import {Injectable} from 'angular2/core';
import {Http,Response,Headers} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';
import 'rxjs/add/operator/share';
import 'rxjs/add/operator/map';
import {User} from '../interfaces/interfaces';
export var API_ENDPOINT = 'http://localhost:8080/api';
@Injectable()
export class UserService {
loggedUser$: Observable<User[]>;
private loggedUserObserver: Observer<User[]>;
private loggedUserInfo:{
users: User[]
};
constructor(private _http: Http) {
this.loggedUser$ = new Observable(observer => this.loggedUserObserver = observer).share();
this.loggedUserInfo = { users: [] };
}
getLoggedUser(){
return this._http.get(API_ENDPOINT+'/getLoggedUser')
.map((res:Response)=>res.json())
.subscribe(
data => {
this.loggedUserInfo.users = data;
this.loggedUserObserver.next(this.loggedUserInfo.users);
},
err => console.error(err),
() => console.log(this.loggedUserInfo.users)
);
}
}
trong giao diện của tôi, tôi có
export interface User {
id?: number,
name?: string,
email?:string,
email2?: string,
password?: string,
mobile?: string,
profilePicture?:string,
userTimeZone?: string
}
nếu tôi đặt một loại trong các nhà xây dựng như
this.loggedUser$ = new Observable<User[]>(observer => this.loggedUserObserver = observer).share();
sau đó nó cho thấy tôi một khác nhau lỗi trên thành phần ứng dụng, lỗi không đến trong thiết bị đầu cuối của nó trên bảng điều khiển và nó là EXCEPTION: Lỗi Loại: _this.loggedUserObserver là undefined
import {Component,OnInit,} from 'angular2/core';
import {Router,ROUTER_DIRECTIVES} from 'angular2/router';
import {RouteConfig, RouteData} from 'angular2/router';
import {MyProfileComponent} from './settings/my-profile.component';
import {MyCompaniesComponent} from './company/my-companies.component';
import {MyTasksComponent} from './tasks/my-tasks.component';
import {UserComponent} from './user/user.component';
import {Observable} from 'rxjs/Observable';
import 'rxjs/Rx';
import {UserService} from './services/user.service';
import {User} from './interfaces/interfaces';
@Component({
selector: 'my-app',
//templateUrl: 'appView/front.html',
template:`{{loggedUser.name}}`,
directives:[ROUTER_DIRECTIVES, MyProfileComponent, MyCompaniesComponent,UserComponent],
providers: [UserService],
})
export class AppComponent{
loggedUser: Observable<User[]>;
loggedUserInfo:User;
constructor (private _userService: UserService){
}
ngOnInit(){
this.loggedUser = this._userService.loggedUser$;
this._userService.getLoggedUser();
}
}
Bạn không nên có loại cho Đài quan sát mới trong hàm tạo? Tôi nghĩ rằng thông báo lỗi chỉ ra cho bạn. – majodi
tôi đã thử với điều này nhưng nó đưa tôi đến một lỗi mới, trong thành phần ứng dụng của tôi tôi có [code] lớp xuất này AppComponent { loggedUser: Observable <{}>; loggedUserInfo: User; hàm tạo (private _userService: UserService) { } ngOnInit() { this.loggedUser = this._userService.loggedUser $; this._userService.getLoggedUser(); } } [/ code] và bây giờ nó nói với tôi rằng loggedUserObserver không được xác định –
hãy nhìn vào câu hỏi được cập nhật của tôi, giải pháp của bạn có lỗi từ thiết bị đầu cuối nhưng ném một ngoại lệ trên bàn điều khiển. –