У меня есть следующее html, которое показывает, когда логическая переменная signUpSuccess становится истинной.
signup.component. html:
<div class="alert alert-success" *ngIf='signUpSuccess'>User has been registered!</div>
<form>
<input class="input" type="text" id="username" name="username" [(ngModel)]="username" placeholder="Username"
required="required" />
...
...
signup.component.ts:
import { Component, Inject, OnInit, PLATFORM_ID, ChangeDetectorRef } from '@angular/core';
import { AuthenticationService } from '@shared/services/rest/authentication.service';
import { isPlatformBrowser } from '@angular/common';
import * as $ from 'jquery';
@Component({
selector: 'app-signup',
templateUrl: './signup.component.html',
styleUrls: ['./signup.component.scss']
})
export class SignupComponent implements OnInit {
public signUpSuccess: boolean = false;
...
...
constructor(
private AuthenticationService: AuthenticationService,
@Inject(PLATFORM_ID) private platformId: any,
private cdRef:ChangeDetectorRef // tried, but calling detectChanges() doesn't work
) { }
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
const component = this;
$(document).ready(function () {
...
...
component.handleSignUp();
...
...
В handleSignUp (), который вызывается через jquery (component.handleSignUp () в функции ngOnInit выше), он подключается к бэкэнду и процессы регистрации:
handleSignUp() {
this.AuthenticationService.signUp(this.username, this.email, this.name, this.password)
.subscribe(
data => {
this.signUpSuccess = true;
...
...
В случае успеха я даю переменной signUpSuccess значение true. Итак, «Пользователь зарегистрирован!» должен появиться автоматически.
Но он не появляется автоматически. Он появляется тогда и только тогда, когда я что-то переписываю в поле ввода имени пользователя.
Как мне автоматически показывать <div class="alert alert-success" *ngIf='signUpSuccess'>User has been registered!</div>
при успешной регистрации?