Перейдите к пользовательскому компоненту на основе состояния кнопки
Я сделал переключатель для входа и регистрации. Я хочу перейти к соответствующим компонентам в соответствии с состоянием переключения этих кнопок.
Как передать или направить мой пользовательский компонент внутри условия?
app.component.ts
import { Component } from '@angular/core';
import { RouterModule, Router, Routes } from '@angular/router';
import { LoginComponent } from './login/login.component';
import { RegisterComponent } from './register/register.component';
import { templateJitUrl } from '@angular/compiler';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Demo';
public show: boolean = false;
public buttonName: any = 'Register';
toggle() {
this.show = !this.show;
if(this.show) {
this.buttonName = "Login";
console.log(this.buttonName);
// code to load login component
}
else {
this.buttonName = "Register";
console.log(this.buttonName)
// code to load register component
}
app.component.html
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
<button (click)="toggle()" id="bt" routerLink="/register">{{buttonName}}</button>
</div>
<br />
<router-outlet></router-outlet>
</body>
</html>
1 ответ
Решение
Вы можете использовать угловой Router
навигаться к маршрутам. Поскольку вы ориентируетесь по условию, это легко при использовании Router
вместо routerLink
в шаблоне.
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
<button (click)="toggle()" id="bt">{{buttonName}}</button>
</div>
<br />
<router-outlet></router-outlet>
</body>
</html>
В component.ts импортировать Router
и введите его в свой компонент.
import { Router } from '@angular/router';
constructor(private router: Router) {
}
toggle() {
this.show = !this.show;
if(this.show) {
this.buttonName = "Login";
this.router.navigate(['/login']);
}
else {
this.buttonName = "Register";
this.router.navigate(['/register']);
}
}