myコンポーネントは、apiを呼び出して値を取得するサービスへのサブスクリプションを持っています。 api呼び出しの前に、私のappStoreが無駄な呼び出しを避けるために既にそれらのデータを持っているのかどうかをチェックしたいが、それを動作させる方法を見つけることはできない。角2 ngrxストアチェック後のhttp要求のみ
どうすればいいですか?
これは私のコンポーネントである:
import { UserService } from '../../core/user.service';
@Component({
...
})
export class AnagraficaComponent implements OnInit {
userData: any;
constructor(private userService:UserService) { }
ngOnInit() {
this.userService.getUserData(1)
.subscribe(result => {
this.userData = result;
});
}
}
そして、これは私のサービスです。
import { CURRENT_USER } from '../app.actions';
interface AppStore {
currentUser: any;
}
@Injectable()
export class UserService {
currentUser: Observable<any>;
constructor(private http: Http, private store: Store<AppStore>) {
this.currentUser = store.select('currentUser');
}
getUserData(id: number): Observable<any> {
// TODO: user store
// check if there is a current user in store (means is already logged in)
// if true return data from store
/*
return this.currentUser
.map(user => {
return user;
});
*/
// else return data from server
let currentUser = JSON.parse(localStorage.getItem('currentUser'));
let headers = new Headers({ 'Content-Type': 'application/json' });
headers.append('Authorization', 'Bearer ' + currentUser.token);
let options = new RequestOptions({ headers: headers });
return this.http.get(myGlobals.API_URL + 'user/' + id, options)
.map((response: Response) => {
// TODO : check response
// update store with current user from server
// this.store.dispatch({ type: CURRENT_USER, payload: userData });
return response.json().data;
});
}
}
に私はそれは私がアプリを通じてつもり利用だ方法だと私はサンザシの店がNGのアプリで動作を理解したいと思いますので、店舗に対してそれをチェックする必要があります。ローカルストレージに対してテストすることは、望ましい選択ではありません。 –