Login 在组件完成布线后将数据传递给组件
我有一个navbar登录(navbar中的登录表单)和一个页面登录(一个带有登录表单的页面,可以路由到)。导航栏登录表单和页面登录表单是通过服务双向绑定的(请参阅下面的第一个代码位) 我想要的是以下流程:Login 在组件完成布线后将数据传递给组件,login,angular,angular2-routing,angular2-forms,angular2-services,Login,Angular,Angular2 Routing,Angular2 Forms,Angular2 Services,我有一个navbar登录(navbar中的登录表单)和一个页面登录(一个带有登录表单的页面,可以路由到)。导航栏登录表单和页面登录表单是通过服务双向绑定的(请参阅下面的第一个代码位) 我想要的是以下流程: 用户在navbar登录中输入电子邮件和密码 单击“提交”按钮时,凭据将发送到login.service 如果凭据错误,服务将路由到显示凭据的登录页面 如果页面登录已经显示,则与服务的双向绑定可以正常工作。但是如果它没有显示,我输入凭据并按下按钮,它只会路由到页面登录,但不会传递凭据。 我使用以
导出类loginnav2page服务{
viewerChange:EventEmitter=neweventemitter();
构造函数(){}
emitNavChangeEvent(用户:{email:string,密码:string}){
this.viewerChange.emit(用户);
}
getNavChangeEmitter(){
返回this.viewerChange;
}
}
这是navbar组件,pass2page与HTML输入中的keyup事件挂钩:
导出类LoginNavbarComponent{
用户:={电子邮件:'',密码:'};
构造函数(private _loginNav2pageService:loginNav2pageService,private _loginService:loginService){}
pass2page(){
this.\u loginNav2pageService.emitNavChangeEvent(this.user);
}
onNavbarLoginBtn(){
this.\u loginService.onNavbarLogin(this.user);
}
}
这是页面登录组件中的侦听器:
导出类LoginPageComponent实现OnInit{
用户={电子邮件:,密码:};
认购:任何;
构造函数(私有的_loginnav2page服务:loginnav2page服务){}
ngOnInit():任何{
this.subscription=this.\u loginNav2pageService.getNavChangeEmitter().subscripte(用户=>this.setViewer(用户));
}
setViewer(用户:{email:string,密码:string}){
this.user=用户;
}
}
最后是登录服务:
导出类登录服务{
构造函数(私有_路由器:路由器,私有_loginnav2page服务:loginnav2page服务){}
//从导航栏登录用户
onNavbarLogin(用户:LoginUserInterface){
//如果成功,则登录和路由
如果(user.email==='name'&&user.password==='1234'){
console.log(“登录成功”);
//通往月台的路线
}
//else路由到登录页面,向用户显示验证错误
否则{
这个.u路由器.导航(['Login']);
此._loginNav2pageService.emitNavChangeEvent(用户);
console.log(“错误凭证”);
}
}
}
晚上睡了个好觉后,我想出来了:),上面的代码是我以前在其他部分中修改过的一段代码,这段代码非常复杂
现在,我只是简单地使用ngAfterViewInit生命周期钩子从服务中获取数据
谢谢 睡了一个好觉后,我发现了:),上面的代码是我以前在其他部分修改过的一段代码,这段代码非常复杂 现在,我只是简单地使用ngAfterViewInit生命周期钩子从服务中获取数据
谢谢 似乎你做了太多的工作,只有一个共享服务可以做你想做的。甚至很难用给定的数据计算出您想要实现的目标。您需要对共享对象使用单一共享服务。是的……在睡了一个好觉之后,我发现:),上面的代码是我以前在其他部分中修改过的一段代码。。。。现在,我只是简单地使用ngAfterViewInit生命周期钩子从服务中获取数据。谢谢这很好,但正如我所说,这仍然可以优化。祝你好运!似乎你做了太多的工作,只有一个共享服务可以做你想做的。甚至很难用给定的数据计算出您想要实现的目标。您需要对共享对象使用单一共享服务。是的……在睡了一个好觉之后,我发现:),上面的代码是我以前在其他部分中修改过的一段代码。。。。现在,我只是简单地使用ngAfterViewInit生命周期钩子从服务中获取数据。谢谢这很好,但正如我所说,这仍然可以优化。祝你好运!