2

我在 Angular 7 项目中生成了三个不同的组件

ng g c mycomp1
ng g c mycomp2
ng g c mycomp3

现在我想在mycop1组件中开发一个选项卡,如下所示

标签图片

通过单击第一个选项卡,它应该显示 HTML 或呈现来自同一组件的内容。
通过单击第二个选项卡,我需要从 mycomp2 组件(来自不同的组件)呈现内容,
类似地,从需要从 mycomp3 组件呈现的第三个选项卡。请帮助我如何继续执行此操作,
谢谢

4

4 回答 4

1

您可以拥有一个包含所有 3 个组件的容器,并添加ngIf到将决定是否显示它的每个组件。

当然,您始终可以使用 Angular 材质选项卡: https ://material.angular.io/components/tabs/overview

于 2019-06-08T14:23:03.683 回答
1

假设我们有 4 个组件(app.component、a.component、b.component、c.component)

检查以下网址中的完整代码 https://stackblitz.com/edit/angular-gerrxm

于 2019-06-08T20:18:08.403 回答
0

我不使用 Angular Material,但您需要使用路由器导航到每个。

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

const routes: Routes = [
    { path: '', loadChildren: './home/home.module#HomeModule' },

    { path: 'mycomp1', component: MyComp1Component },
    { path: 'mycomp2', component: MyComp2Component },
    { path: 'mycomp3', component: MyComp3Component }
];
于 2019-06-08T14:58:57.503 回答
0

html文件:

<div class="tab">
  <button class="tablinks" routerLink="/tab1">Tab 1</button>
  <button class="tablinks" routerLink="/tab2">Tab 2</button>
  <button class="tablinks" routerLink="/tab3">Tab 3</button>
</div>

Using router method in component
<div class="tab">
  <button class="tablinks" (click)="setTab('tab1')">Tab 1</button>
  <button class="tablinks" (click)="setTab('tab2')">Tab 2</button>
  <button class="tablinks" (click)="setTab('tab3')">Tab 3</button>
</div>

<router-outlet></router-outlet>

ts文件:

import { Component } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  constructor(
    private router: Router
  ) {}
  setTab(tabname: string) {
    this.router.navigate([`/${tabname}`]);
  }

}

CSS:

body {font-family: Arial;}

/* Style the tab */
.tab {
  overflow: hidden;
  border: 1px solid #ccc;
  background-color: #f1f1f1;
}

/* Style the buttons inside the tab */
.tab button {
  background-color: inherit;
  float: left;
  border: none;
  outline: none;
  cursor: pointer;
  padding: 14px 16px;
  transition: 0.3s;
  font-size: 17px;
}

/* Change background color of buttons on hover */
.tab button:hover {
  background-color: #ddd;
}

/* Create an active/current tablink class */
.tab button.active {
  background-color: #ccc;
}

/* Style the tab content */
.tabcontent {
  display: block;
  padding: 6px 12px;
  border: 1px solid #ccc;
  border-top: none;
}
于 2019-08-03T10:16:08.410 回答