मैं @ एनजीआरएक्स/स्टोर और @ एनजीआरएक्स/प्रभाव के साथ एक कोणीय 2 ऐप बना रहा हूं।कोणीय 2 @ एनजीआरएक्स/स्टोर/प्रभाव - सेवा कार्यों को कहां कॉल करें
मैं समझने के साथ संघर्ष कर रहा हूं कि क्रियाओं/प्रभावों के बाहर तर्क कहां रखना है और सेवा कार्यों को कहां कॉल करना है।
उदाहरण के लिए, प्रमाणीकरण के साथ ...
- एक उपयोगकर्ता लॉगिन क्लिक करता है यह पेलोड के रूप में लॉगइन क्रेडेंशियल्स के साथ एक
AUTH_REQUEST
कार्रवाई डिस्पैचिज। - एक प्रभाव इस क्रिया को एपीआई कॉल करता है।
- एक सफल परिणाम प्रतिक्रिया ऑब्जेक्ट में टोकन, उपयोगकर्ता नाम आदि के साथ कार्रवाई को एक पेलोड के रूप में कॉल करता है जो
AuthState
को अद्यतन करने के लिए Reducer पर जाता है।
जैसे: AuthEffects
@Effect() authenticate$ = this.updates$
.whenAction(AuthActions.AUTHENTICATE_REQUEST)
.switchMap(update => this.api.post('/authenticate', update.action.payload)
.map((res:any) => ({type: AuthActions.AUTHENTICATE_SUCCESS, payload: res.json()}))
.catch((err:any) => Observable.of({ type: AuthActions.AUTHENTICATE_ERROR, payload: err }))
);
में AuthReducer
case AuthActions.AUTHENTICATE_SUCCESS:
return Object.assign({}, state, <AuthState>{
processing: false,
failed: false,
isLoggedIn: true,
token: action.payload.token,
username: action.payload.username,
accountId: action.payload.accountId,
});
में क्या मैं जानना चाहता हूँ है:
- कहाँ रूटर कॉल करने के लिए एक
AUTH_SUCCESS
के बाद पृष्ठों को बदलने के लिए कार्रवाई संसाधित की जाती है। क्या मैं इसे प्रतिक्रियाशील श्रृंखला या .... के भीतर से करता हूं ?? - मेरे पास
AuthService
है जिसे स्थानीय स्टोरेज में प्रमाण-पत्र (टोकन इत्यादि) को स्टोर करने की आवश्यकता है। मुझे इसे "टोकन स्टोर" यानीauthService.store(userCredentials)
कहां से कॉल करना चाहिए।
किसी भी मदद की सराहना की।
क्या आप ['CodeSequence/ngrx-store-router'] (https://github.com/CodeSequence/ngrx-store-router) का उपयोग कर रहे हैं? – cartant
हाँ मैं स्टोर राउटर का उपयोग कर रहा हूं ... – markstewie