Javascript 链接在NgOnInit和NgAfterViewInit上执行的任务

Javascript 链接在NgOnInit和NgAfterViewInit上执行的任务,javascript,angular,typescript,angular8,Javascript,Angular,Typescript,Angular8,伙计们,我真的要发疯了,要正确地处理弯钩。我不知道我错在哪里了。我已经试着阅读了很多东西,从现在开始的一周左右,我一直在努力阅读 我的问题 我在NgOnInIt()期间应用了很多服务器api调用和一些业务逻辑。但这样做时,我有时会遇到RegisterationComponent.html:82错误类型错误:无法读取未定义的的属性“titleId”。在其他时候,我很难正确初始化向导 我现在将详细说明我面临的是什么: 恩戈尼尼特() ngAfterViewInit() 现在,必须在ngAfterVi

伙计们,我真的要发疯了,要正确地处理弯钩。我不知道我错在哪里了。我已经试着阅读了很多东西,从现在开始的一周左右,我一直在努力阅读

我的问题 我在NgOnInIt()期间应用了很多服务器api调用和一些业务逻辑。但这样做时,我有时会遇到
RegisterationComponent.html:82错误类型错误:无法读取未定义的
的属性“titleId”。在其他时候,我很难正确初始化向导

我现在将详细说明我面临的是什么:

恩戈尼尼特() ngAfterViewInit() 现在,必须在ngAfterViewInit中初始化此向导。我曾尝试在ngOnInit中这样做,但不起作用。这些事件不起作用

您在queryParamsMap订阅中看到的行主要是我试图实现的目标。我想根据用户登陆屏幕的状态从不同的步骤启动向导

this.wizard = new KTWizard(this.el.nativeElement, {
                startStep: 2
              });
    
              this.initializeWizardEvents();
此外,您还可以找到这一行:
this.setOrderDetails()
看起来像是一个错误的定义变量,在模板
RegisterationComponent.html
88
中,应该有类似于
variable.titleId
的内容,在.ts文件中该变量的定义如下:

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class YourComponentName {
  variable;
}

问题是,当您的组件被加载时,变量是未定义的,因此您应该像空对象一样定义
变量:键入={}
,这样html组件将获得
未定义的
并插入一个错误,如果您的组件正在检查一些不同的
未定义的
,您应该像
变量={titleId:expectedValue}

一样定义变量,该变量已经定义为
用户详细信息:用户其中有一个属性,名为
titleId
,在组件完成调用和获取用户详细信息之前不会设置该属性。我遇到的问题是,文本框没有通过此错误。我将用引起问题的
RegistrationComponent.html
代码块更新问题。你们可以看到它有文本输入和下拉列表。无论出于何种原因,只有在出现此错误时才会出现下拉列表。是否初始化
userDetails:User
as
userDetails:User={}?,为什么您要
standalone
一些输入和选择不存在?我也会将standalone添加到选择中,但我认为它不会修复,我曾经做过这样的操作。我想。我会让你知道的。至于初始化。它是按照上面提到的方式完成的,而不是通过空对象。
this.wizard = new KTWizard(this.el.nativeElement, {
                startStep: 2
              });
    
              this.initializeWizardEvents();
<!--begin: Form Wizard Step 2-->
          <div class="kt-wizard-v3__content" data-ktwizard-type="step-content" data-ktwizard-state="current">
            <div class="kt-form__section kt-form__section--first">
              <!-- <ng-template #loggedIn> -->
              <div class="kt-wizard-v3__form">
                <div class="wizard-title-area">
                  <p class="para">
                    <span class="name">Hi {{ userDetails.firstName }}, </span>You have logged in using your social
                    account. <a href="#">Click here</a> if this is not the correct information.
                  </p>
                </div>
                <div class="kt-separator kt-separator--border-2x separator-margin-top-0"></div>
                <form #userForm="ngForm">
                  <div class="form-input-wrap">
                    <div class="row">
                      <div class="col-sm-2">
                        <div class="form-group">
                          <mat-form-field>
                            <mat-select
                              id="prefix"
                              name="prefix"
                              placeholder="prefix"
                              [(ngModel)]="userDetails.titleId"
                              name="userTitle"
                              id="userTitle"
                              required
                            >
                              <mat-option *ngFor="let title of titles" [value]="title.id">{{
                                title.description
                              }}</mat-option>
                            </mat-select>
                          </mat-form-field>
                          <!-- <div
                            *ngIf="userTitle.invalid && (userTitle.dirty || userTitle.touched)"
                            class="alert alert-danger"
                          >
                            <div *ngIf="userTitle.errors.required">
                              Please select a Title
                            </div>
                          </div> -->
                        </div>
                      </div>
                      <div class="col-sm-4">
                        <div class="form-group">
                          <mat-form-field>
                            <input
                              matInput
                              #input
                              maxlength="20"
                              placeholder="First Name"
                              required
                              [(ngModel)]="userDetails.firstName"
                              [ngModelOptions]="{ standalone: true }"
                            />
                          </mat-form-field>
                        </div>
                      </div>
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <input
                              matInput
                              #input
                              maxlength="20"
                              placeholder="Last Name"
                              required
                              [(ngModel)]="userDetails.lastName"
                              [ngModelOptions]="{ standalone: true }"
                            />
                          </mat-form-field>
                        </div>
                      </div>
                    </div>
                  </div>
                  <div class="form-input-wrap">
                    <div class="row">
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <input
                              matInput
                              type="email"
                              #input
                              maxlength="20"
                              placeholder="email"
                              required
                              [(ngModel)]="userDetails.email"
                              [ngModelOptions]="{ standalone: true }"
                            />
                          </mat-form-field>
                        </div>
                      </div>
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <mat-select
                              id="gender"
                              name="gender"
                              placeholder="gender"
                              [(ngModel)]="userDetails.genderId"
                              aria-required="true"
                              [ngModelOptions]="{ standalone: true }"
                            >
                              <mat-option *ngFor="let gender of genders" [value]="gender.id">{{
                                gender.alias
                              }}</mat-option>
                            </mat-select>
                          </mat-form-field>
                        </div>
                      </div>
                    </div>
                  </div>

                  <div class="form-input-wrap">
                    <div class="row">
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                              <mat-label>Select your nationality</mat-label>

                            <mat-select
                              placeholder="nationality"
                              [(ngModel)]="userDetails.nationalityCode"
                              [ngModelOptions]="{ standalone: true }"
                            >
                              <mat-option *ngFor="let country of countries" [value]="country.code">{{
                                country.name
                              }}</mat-option>
                            </mat-select>
                          </mat-form-field>
                        </div>
                      </div>
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                              <mat-label>Select the country of residence</mat-label>
                            <mat-select
                              placeholder="country"
                              [(ngModel)]="userDetails.countryCode"
                              [ngModelOptions]="{ standalone: true }"
                              (selectionChange)="onCountryChange()"
                            >
                              <mat-option *ngFor="let country of countries" [value]="country.code">{{
                                country.name
                              }}</mat-option>
                            </mat-select>
                          </mat-form-field>
                        </div>
                      </div>
                    </div>
                  </div>

                  <div class="form-input-wrap">
                    <div class="row">
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <mat-label>Select a job function</mat-label>
                            <mat-select
                              matInput
                              id="userJobFunction"
                              name="userJobFunction"
                              placeholder="job function"
                              [(ngModel)]="userDetails.jobFunctionId"
                              required
                              #userJobFunction="ngModel"
                            >
                              <mat-option *ngFor="let function of jobFunctions" [value]="function.id">{{
                                function.name
                              }}</mat-option>
                            </mat-select>
      
                            <mat-error *ngIf="userJobFunction.hasError('required')">
                                Please select a job function.
                            </mat-error>
      
                          </mat-form-field>
                        </div>
                      </div>
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <mat-label>Select a job title</mat-label>
                            <mat-select
                              matInput
                              id="userJobTitle"
                              name="userJobTitle"
                              placeholder="job title"
                              [(ngModel)]="userDetails.jobTitleId"
                              required
                              #userJobTitle="ngModel"
                            >
                              <mat-option *ngFor="let jobTitle of jobTitles" [value]="jobTitle.id">{{
                                jobTitle.name
                              }}</mat-option>
                            </mat-select>
                            <mat-error *ngIf="userJobTitle.hasError('required')">
                                Please select a job title.
                            </mat-error>
                          </mat-form-field>
                        </div>
                      </div>
                    </div>
                  </div>


                  <div class="form-input-wrap">
                    <div class="row">
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <input
                              matInput
                              type="text"
                              #input
                              maxlength="20"
                              placeholder="phone"
                              required
                              [(ngModel)]="userDetails.mobile"
                              [ngModelOptions]="{ standalone: true }"
                            />
                          </mat-form-field>
                        </div>
                      </div>
                      
                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <mat-label>Select a city</mat-label>
                            <mat-select
                              matInput
                              id="userCity"
                              name="userCity"
                              placeholder="city"
                              [(ngModel)]="userDetails.city"
                              required
                              #userCity="ngModel"
                            >
                              <mat-option *ngFor="let city of filteredCities" [value]="city.id">
                                {{ city.name }}
                              </mat-option>
                            </mat-select>
      
                            <mat-error *ngIf="userCity.hasError('required')">
                                Please select a city.
                              </mat-error>
      
                          </mat-form-field>
                        </div>
                      </div>

                    </div>
                  </div>

                  <div class="form-input-wrap">
                    <div class="row">
                      <div class="col-sm-6">
                        <div class="form-group">

                          <mat-form-field>
                            <input matInput [matDatepicker]="userDOB" [max]="maxDate" id="userDOB" name="userDOB" placeholder="Date of Birth" [(ngModel)]="userDetails.userDOB"
                            [ngModelOptions]="{ standalone: true }">
                            <mat-datepicker-toggle matSuffix [for]="userDOB"></mat-datepicker-toggle>
                            <mat-datepicker #userDOB disabled="false"></mat-datepicker>
                          </mat-form-field>
                        </div>
                      </div>

                      <div class="col-sm-6">
                        <div class="form-group">
                          <mat-form-field>
                            <input
                              matInput
                              type="text"
                              #input
                              maxlength="20"
                              placeholder="company"
                              [(ngModel)]="registrationTransactionDetails.companyName"
                              [ngModelOptions]="{ standalone: true }"
                            />
                          </mat-form-field>
                        </div>
                      </div>
                    </div>
                  </div>                  
                </form>
              </div>
              <!-- </ng-template> -->
            </div>
          </div>
          <!--end: Form Wizard Step 2-->
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class YourComponentName {
  variable;
}