javascript - 使用模态 [Bootstrap] 在 Angular 中登录表单
问题描述
我是 Angular 的新手,我正在为 Ui 使用引导程序。现在我被困在一个点上。我必须以角度创建一个登录表单,并且我希望它是一个模态的。我正在为登录模式使用单独的组件。我有一个带有按钮的标题组件,以及带有模态正文的登录组件。所以我的主要问题是如何通过在标题组件中单击按钮来打开登录组件(作为模式)。
标题组件:HTML:
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="#">{{ title }}</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item" routerLinkActive="active">
<a class="nav-link" routerLink="/home">Home</a>
</li>
<li class="nav-item" routerLinkActive="active">
<a class="nav-link" routerLink="/about">About</a>
</li>
<li class="nav-item" routerLinkActive="active">
<a class="nav-link" routerLink="/menu">Menu</a>
</li>
<li class="nav-item" routerLinkActive="active">
<a class="nav-link" routerLink="/contact">Contact</a>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<li class="nav-item mr-2">
<a class="nav-link" (click)="openLoginForm()" data-toggle="modal"
data-target="#staticBackdrop">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" (click)="openSignUpForm()">Sign Up</a>
</li>
</ul>
</div>
</nav>
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4" style="font-weight: 400;">{{ title }}</h1>
<p class="lead">We take inspiration from the World's best cuisines and create a unique fusion experience. Our
lipsmacking creation will tickle your culinary senses!</p>
</div>
</div>
.ts 文件:
import { Component, OnInit } from '@angular/core';
import { LoginComponent } from '../login/login.component';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
title = 'Restaurant';
constructor() { }
ngOnInit(): void {
}
openLoginForm(): void {}
openSignUpForm(): void {}
}
登录组件:Html 文件:
<div class="modal fade" id="staticBackdrop" data-backdrop="static" tabindex="-1" role="dialog"
aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Understood</button>
</div>
</div>
</div>
</div>
.ts 文件:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
constructor() {}
ngOnInit(): void {
}
}
解决方案
我猜你正在使用引导模式。如果是这样
在您的标题组件中 ts-
import { Component, OnInit } from '@angular/core';
import { LoginComponent } from '../login/login.component';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
title = 'Restaurant';
constructor(private modalService: NgbModal) { }
ngOnInit(): void {
}
openLoginForm(): Void{
const modalRef = this.modalService.open(LoginComponent);
}
openSignUpForm(): void {}
}
示例 - https://stackblitz.com/edit/angular-bootstrap-modal?file=app%2Fapp.component.ts
推荐阅读
- apache - Apache 向所有虚拟主机提供相同的内容
- python - 为什么矩形不移动?
- encryption - 我可以使用“加密”这个词作为英文密码散列函数的散列吗?
- arrays - 在 Powershell 中正确使用 ForEach -parallel?
- c++ - 如何在卡萨布兰卡将 std::list 解析为 json::value?
- c++ - std::sort 多态类型未按预期排序
- c++ - 做while循环..现在:无限,目标:不是无限(询问直到循环)
- python - 为什么 Tensorflow 2.4.1 找不到我的 GPU?
- excel - 如何刮桌子?
- python - 如何在python中返回字符串的中间字符?