2016-05-01 11 views
7

नमूदार assigend करने में असमर्थ है, मेरी package.json फ़ाइल रखतीप्रकार 'प्रत्यक्ष <{}> ' कोणीय में टाइप करने के 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" 

समस्या होता है, जबकि मेरी टर्मिनल संकलन यह मुझे एक त्रुटिसंदेश से पता चलता शुरू आबंटित नहीं है

संदेश:

'\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 \'{}\'.' }

मेरी सेवा घटक में

this.loggedUser $ असमर्थ है निर्माता के अंदर नए प्रत्यक्ष द्वारा initialised और यह टूट जाता है करने के लिए पूरी बात।

यह मेरा इंटरफ़ेस में मेरी सेवा घटक

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) 
    ); 
    } 


} 

है मैं

export interface User { 
    id?: number,  
    name?: string, 
    email?:string, 
    email2?: string, 
    password?: string, 
    mobile?: string, 
    profilePicture?:string, 
    userTimeZone?: string 
} 

है अगर मैं की तरह

this.loggedUser$ = new Observable<User[]>(observer => this.loggedUserObserver = observer).share(); 

तो निर्माता में एक प्रकार जगह यह मुझे एक अलग से पता चलता ऐप घटक पर त्रुटि, कंसोल पर आने वाले टर्मिनल में त्रुटि नहीं आ रही है और यहहैअपवाद: लेखन त्रुटि: _this.loggedUserObserver अपरिभाषित है

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(); 
    } 
} 
+0

क्या आपके पास कन्स्ट्रक्टर में अपने नए अवलोकन के लिए कोई प्रकार नहीं होना चाहिए? मुझे लगता है कि त्रुटि संदेश आपको बताता है। – majodi

+0

मैंने इसके साथ प्रयास किया लेकिन यह मुझे एक नई त्रुटि में चला गया, मेरे ऐप घटक में मेरे पास [कोड] इस निर्यात वर्ग AppComponent { लॉग यूज़र: अवलोकन योग्य <{}>; logUserInfo: उपयोगकर्ता; निर्माता (निजी _userService: UserService) {} ngOnInit() { this.loggedUser = this._userService.loggedUser $; यह ._userService.getLoggedUser(); } } [/ कोड] और अब यह मुझे बताता है कि logUserObserver को परिभाषित नहीं किया गया है –

+0

कृपया मेरा अपडेट किया गया प्रश्न देखें, आपका समाधान टर्मिनल से त्रुटि लेता है लेकिन कंसोल पर अपवाद फेंकता है। –

उत्तर

9

एक बहुत खोजा, और #majodi से टिप्पणी भी मदद की। service.ts में मैं इस

loggedUser$: Observable<User[]>; 
loggedUserObserver: Observer<User[]>; 
loggedUserInfo:User[]; 

की तरह और सेवा निर्माता

constructor(private _http: Http) { 
    this.loggedUser$ = new Observable<User[]>(
     observer => { 
     this.loggedUserObserver = observer; 
    } 
    ).share(); 
} 

में और app.component.ts में मेरी चर initialised है मैं अपने नमूदार इस तरह से कहा जाता है फ़ाइल

ngOnInit(){  
    this._userService.loggedUser$.subscribe(latestData => { 
     this.loggedUserInfo1 = latestData; 

    });  
    this._userService.getLoggedUser(); 
} 

और इन मुद्दों को हल किया।

संबंधित मुद्दे