Angular 提交后如何在md选项卡之间切换并动态选择特定选项卡?

Angular 提交后如何在md选项卡之间切换并动态选择特定选项卡?,angular,angular-material2,angular-components,angular-component-router,Angular,Angular Material2,Angular Components,Angular Component Router,我正在索引页md选项卡组中使用,其中我有两个选项卡,每个选项卡都有自己的组件-signin.component和register.component: <md-tab-group> <md-tab label="signin"></md-tab> <md-tab label="register"></md-tab> <md-tab-group> 我尝试了几个想法,但不幸的是,没有一个能给我预期的结果 有什么提示

我正在索引页
md选项卡组中使用
,其中我有两个选项卡,每个选项卡都有自己的组件-
signin.component
register.component

<md-tab-group>
   <md-tab label="signin"></md-tab>
   <md-tab label="register"></md-tab>
<md-tab-group>
我尝试了几个想法,但不幸的是,没有一个能给我预期的结果


有什么提示或想法吗?

md选项卡组具有
selectedIndex
属性。像这样的方法应该会奏效:


首先,您需要创建一个名为SwitchTabService的服务,以实现组件之间的通信

import { Injectable, EventEmitter } from '@angular/core';

@Injectable()
export class SwitchTabService{
   public onRegisterFinish = new EventEmitter();
}
将该服务添加到app.module.ts提供程序

...
providers: [
   ...
   SwitchTabService
   ...
]
...
您可以按如下方式使用双向数据绑定:
signIn.component.html文件

<md-tab-group [(selectedIndex)]='currentSelectedIndex'>
   <md-tab label="signin"></md-tab>
   <md-tab label="register"></md-tab>
<md-tab-group>
在register.component中

import {Component, EventEmitter} from '@angular/core';
import { SwitchTabService } from '??';    

@Component({
  ...
})
export class RegisterComponent{

  constructor( private switchTabService: SwitchTabService) {}       

   onSubmitForm() {
     // you submit Logic
     this.switchTabService.onRegisterFinish.emit();
   }
}

没有帮助。。。这是我以前尝试过的选项之一。关键是我必须在
register.component.ts
中添加
currentSelectedIndex
属性,因为注册表表单位于:
register.component.html
中,但是:
mg选项卡组
被嵌入
signin.component.html
中,该属性由:
signin.component.ts
控制。用例:我必须更改
signin.component.ts
中的selectedIndex,从:
register.component.ts
很好。服务选项完成了修复。工作很好。只需更改一件事:改为
this.currentSelectedIndex=signInIndex应该是:
this.currentSelectedIndex=this.signInIndex
import {Component, OnInit} from '@angular/core';
import { SwitchTabService } from '??';    

@Component({
  ...
})
export class SignInComponent implements OnInit{
  currentSelectedIndex;
  signInIndex = 0; // assuming the index of signIn tab is 0 or the first

  constructor(private switchTabService: SwitchTabService) {}      

  ngOnInit() {
     this.switchTabService.onRegisterFinish.subscribe( () => {
        this.onRegisterFinished();
     });
  }      

  onRegisterFinished() {
     this.currentSelectedIndex = this.signInIndex;
     // this will change the selected tab to signIn tab.
  }
}
import {Component, EventEmitter} from '@angular/core';
import { SwitchTabService } from '??';    

@Component({
  ...
})
export class RegisterComponent{

  constructor( private switchTabService: SwitchTabService) {}       

   onSubmitForm() {
     // you submit Logic
     this.switchTabService.onRegisterFinish.emit();
   }
}