-1

api.service.tsサービスでCookieが未定義です。コンポーネントにクッキー値が存在する|角度

import { Injectable, Inject } from '@angular/core'; 
import { Http, Headers } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/throw'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/timeout'; 
import 'rxjs/add/operator/retry'; 

import { CacheService } from './cache.service'; 
import { AuthService } from '../services/auth.service'; 
import { CookieService } from 'angular2-cookie/core'; 

@Injectable() 
export class ApiService { 
    constructor(
     public _http: Http, 
     private _auth: AuthService, 
     private _cookie: CookieService, 
     @Inject('isBrowser') public isBrowser: boolean 
     ) {} 

     get(){ 
      console.log(this._cookie.get('Token'));//undefined 
     } 
    } 

controller.component.ts

import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; 
import { ActivatedRoute } from '@angular/router'; 
import { ApiService } from './api.service'; 
import { ReviewComponent } from '../shared/+review/review.component'; 
import { CookieService } from 'angular2-cookie/core'; 
// import { ModelService } from '../shared/model/model.service'; 

@Component({ 
    selector: 'mall', 
    templateUrl: './mall.component.html', 
    styleUrls:['./mall.component.css'], 
    providers: [ ApiService, CookieService ] 
}) 
export class MallComponent implements OnInit { 

    constructor(private _api: ApiService, private route: ActivatedRoute, private _cookie: CookieService) {} 

    ngOnInit(){ 
     this._cookie.get('Token');// Token => value 
     this._api.get(); //Token => undefined 
    } 
} 

私は、この動作を理解していません。クッキーはコントローラに直接アクセスするときに存在しますが、サービスを介してアクセスするときは定義されていません。

サービス経由でCookieにアクセスする方法はありますか?

https://github.com/salemdar/angular2-cookieと角度ユニバーサル。

+0

@Neel uがさえ疑問に提供されるリンクのいずれかをチェックされていますか?最初に質問を勉強してください...問題を理解し、合理的な声明で返信してください。 –

+0

なぜ 'ApiService.get'は値を返しませんか?それは意味をなさない。 –

+1

@AluanHaddad私はその理由を知っています。そうでなければ、この質問の必要はありませんでした... –

答えて

0

これは多分ですか?

ngOnInit(){ 
    this._cookie.put('Token', WHATEVER_TOKEN_IS);// Token => value 
    console.log(this._api.get('Token')); //Token => undefined 
} 

、その後

APIサービス

export class ApiService { 
    constructor(
    readonly _http: Http, 
    private _auth: AuthService, 
    private _cookie: CookieService, 
    @Inject('isBrowser') public isBrowser: boolean 
    ) {} 

    get() { 
     const token = this._cookie.get('Token'); 
     console.log(token); 
     return token; 
    } 
} 
+0

私は何が喫煙されているのか分かりませんが、問題はクッキーを保存することではありません...問題はなぜAPI呼び出しがクッキーを返さないコンポーネントコールが値を返している間に値を返します...またはこれはこのようになっているはずです...もしそうなら、なぜですか?そうでなければ不規則性があるのです... –

+1

まず、簡単に取ってください。第二に、あなたがこのような答えを望まないなら、あなたの質問を洗練して、コードが少なくとも漠然とした意味を持つようにする必要があります。あなたのngOnInitメソッドのコードは意味をなさない。 –

+0

であり、関数が値を返す場合は値が存在することを理解できます。私はコードを単純化して、問題が存在するコードを取得するだけでよいのです。そしてあなたの答えは、私に価値を保存するように伝えることです。本当にあなたは何を喫煙していますか? 2つの関数が他の関数の後に1つ呼び出されている場合、そのうちの1つは戻り値を返しません。順序は問題ではありませんcoz私は2番目の関数を呼び出してみましたが、応答はまだ同じです..サービスからの関数は値を返していません。 –

関連する問題