Давайте предположим, что у меня есть проект Angular 5 с маршрутизацией. Например, /home, /landing-page, etc
. Кроме того, давайте предположим, что на моей целевой странице с URL - localhost:4200
. Я хочу создать панель входа в систему. У меня есть два поля - username
и password
, одна кнопка sign in
и две другие кнопки forgot password?
и Don't have an account?
. Моя проблема в том, что когда пользователь нажмет Forgot password?
или Don't have an account?
, он не будет перенаправлен на другую страницу с URL-адресом, подобным localhost:4200/sign-up
, но останется на той же странице с URL-адресом localhost:4200
и полями username, password, sign in, forgot password?
и * 1013. * исчезнет и на их месте будут отображаться поля, связанные с регистрацией. Я не уверен, знаете ли вы, что я имею в виду. Хороший пример, которого я хочу достичь, это https://www.instagram.com. Независимо от того, нажимаете ли вы Зарегистрироваться или Войти, у вас все еще остается тот же URL, и изменяется только один компонент. Вы знаете, как мне этого добиться? Я не уверен, должен ли я использовать маршруты или, возможно, другой способ более оптимален для этого? Заранее спасибо.
Мой код выглядит следующим образом. Я добавил только самый важный код из выбранных файлов.
index.html:
</head>
<body>
<app-root></app-root>
</body>
</html>
app.component.html:
<app-navbar></app-navbar>
<router-outlet></router-outlet>
<app-footer *ngIf="removeFooter()"></app-footer>
На данный момент мой home.component
выглядит следующим образом:
home.component.html:
<div *ngIf="isSignIn()">
<app-sign-in></app-sign-in>
</div>
<div *ngIf="isSignUp()">
<app-sign-up></app-sign-up>
</div>
<div *ngIf="isForgotPassword()">
<app-forgot-password></app-forgot-password>
</div>
home.component.ts:
constructor() {
this.signin = true;
this.signup = false;
this.forgot = false;
}
isSignUp() {
if (this.signup === true) {
return true;
}
else {
return false;
}
}
isSignIn() {
if (this.signin === true) {
return true;
}
else {
return false;
}
}
isForgotPassword() {
if (this.forgot === true) {
return true;
}
else {
return false;
}
}
вход in.component.html:
<div class="content-center">
<div class="container">
<div class="title-brand">
<div align="center">
<input style="background-color: black; border-color: white; color:white; width: 270px" type="text" value="" class="form-control" placeholder="USERNAME">
<br>
<input style="background-color: black; border-color: white; color:white; width: 270px" type="text" value="" class="form-control" placeholder="PASSWORD">
<div class="row">
<div class="col-md-8">
<br>
<button style="background-color: black; border-color: white; color:white; width: 270px" type="button" class="btn btn-danger">Log in</button>
</div>
</div>
<br>
<h6 style = "color: white" [routerLink]="['/main']" skipLocationChange class=pointer>Forgot Password?</h6>
<h6 style="color: white" [routerLink]="['/sign-up']" class=pointer>Don't have an account?</h6>
</div>
</div>
</div>
</div>
UPDATE
Я добавил исходный код sign-in.component.html к вопросу. Можете ли вы показать мне, как я могу переключить компонент sign-in.component.html после нажатия Забыли пароль? или нет аккаунта? к компоненту Forgot.component.html или sign-up.component.html