उपयोगकर्ता लॉगऑन बटन पर क्लिक करने के बाद अपने कोणीय 2 ऐप को फिर से लोड करना चाहता हूं, मैं ऐप में सभी मौजूदा डेटा को साफ़ करना चाहता हूं और साइन इन फॉर्म से लोड करना चाहता हूं सर्वर।उपयोगकर्ता लॉगआउट के बाद एंगुलर 2 ऐप को फिर से लोड करने के लिए कैसे करें
अब, लॉगआउट बटन पर क्लिक करने के बाद, मुझे अपनी सदस्यता विधि में सर्वर से (साइन इन फॉर्म के साथ) का जवाब मिल रहा है, लेकिन मुझे नहीं पता कि वर्तमान ऐप के डेटा को कैसे साफ किया जाए और साइन इन फॉर्म लोड करें ।
क्या कोई मेरी मदद कर सकता है?
यह मेरा मुख्य वर्ग AppComponent
import {Component} from 'angular2/core';
import {OnInit} from "angular2/core";
import {Router} from "angular2/router";
import {RouteConfig} from "angular2/router";
import {AuthRouteOutlet} from "./common/directives/auth-router-outlet.directive";
import {AuthService} from "./common/services/auth.service";
import {DashboardComponent} from "./common/components/dashboard.component";
@Component({
selector: 'my-app',
template: `
<auth-router-outlet></auth-router-outlet>
`,
directives: [AuthRouteOutlet, DashboardComponent]
})
@RouteConfig([
{path: '/dashboard/...', name: 'Dashboard', component: DashboardComponent, useAsDefault: true}
])
export class AppComponent implements OnInit {
constructor(
private _router: Router,
private _authService: AuthService
) {}
ngOnInit():any {
var self = this;
this._authService.getLoggedOutEvent().subscribe(function(next) {
//console.log('AppComponent OnEmit: ' + JSON.stringify(next));
self._router.navigateByUrl('/', true);
});
}
}
यह मेरी सेवा है। मैं यहां से लॉगआउट अनुरोध भेजता हूं।
import {Injectable, EventEmitter} from 'angular2/core';
import {User} from "../models/user.interface";
import {Http} from "angular2/http";
import {Observable} from "rxjs/Observable";
import {Headers} from "angular2/http";
@Injectable()
export class AuthService {
private _userLoggedOut = new EventEmitter<any>();
constructor(private _http: Http) {}
getLoggedOutEvent(): EventEmitter<any> {
return this._userLoggedOut;
}
logout(): Observable<any>{
return this._http.get('/logout');
}
}
और यह मेरा घटक है जिससे मैं लॉगआउट विधि का आह्वान करता हूं।
import {Component} from "angular2/core";
import {ROUTER_DIRECTIVES, Router} from "angular2/router";
import {AuthService} from "../services/auth.service";
@Component({
selector: 'mdm-header-bar',
template: `
<header>
<nav id="mdm-header-bar" >
<ul>
<li><a (click)="addComponent()" title="Add component"><i class="fa fa-plus-circle"></i></a></li>
<li><a (click)="settings()" title="Settings"><i class="fa fa-cog"></i></a></li>
<li><a (click)="help()" title="Help"><i class="fa fa-question-circle"></i></a></li>
<li><a (click)="logout()" title="Logout"><i class="fa fa-sign-out"></i></a></li>
</ul>
</nav>
</header>
`,
directives: [ROUTER_DIRECTIVES]
})
export class HeaderComponent {
constructor(private _authService: AuthService) {}
logout() {
var self = this;
this._authService.logout()
.subscribe(function(next) {
self._authService.getLoggedOutEvent().emit(next);
}, function(exception){
console.log('HeaderComponent OnException: ' + exception);
}, function() {
console.log('HeaderComponent OnCompleted ');
});
}
}
जब मैं अनुप्रयोग के मुख्य पृष्ठ के लिए पहली बार (मैं स्थानीय होस्ट करने के लिए अनुरोध भेज: 3000) लोड, सर्वर की जाँच करता है अगर मैं प्रमाणीकृत और यदि नहीं, यह मेरे स्थानीय होस्ट पर रीडायरेक्ट: 3000/साइन-इन पृष्ठ। प्रमाणीकरण के बाद सर्वर मुझे मुख्य पृष्ठ भेजता है: लोकलहोस्ट: 3000
जब मैं लॉगआउट अनुरोध भेजता हूं, तो सर्वर मुझे लॉगआउट करता है और स्थानीयहोस्ट: 3000/साइनइन पेज के साथ एक जवाब भेजता है, क्योंकि मैं पहले से लॉग इन नहीं हूं।
मुझे यह पृष्ठ मेरे लॉगआउट (...) में सर्वर से मिलता है। सदस्यता लें (...) विधि, लेकिन मुझे नहीं पता कि वर्तमान पृष्ठ (ऐप) को कैसे उतारना है और इस पृष्ठ को लोड करने के लिए ब्राउज़र प्राप्त करें।
अच्छा, यह आसान सवाल नहीं है। यह निर्भर करता है कि आपका कोड कैसे लिखा गया है। क्या आप कुछ स्निपेट जोड़ सकते हैं? इसके अतिरिक्त इस ब्लॉग पोस्ट को https://auth0.com/docs/client-platforms/angular2 – ssuperczynski
पुनः लोड करने से आप किस प्रभाव से अपेक्षा करते हैं? आप ऐसा क्यों करना चाहते हो? मार्ग क्यों नहीं बदलते? –
@ssuperczynski धन्यवाद ssuperczynski। मैं निश्चित रूप से जांच करूँगा। – Alexander