Title rewritten as: My div or its data is not rendering correctly with the ngFor directive
P粉450744515
P粉450744515 2023-09-06 21:15:27
0
1
450

I created a service in my component that I subscribe to, but when I use ngFor, the div doesn't render at all.

Component.TS file

import { Component, OnInit } from '@angular/core';
import {FormBuilder, Validators} from '@angular/forms';
import { PlansService } from 'src/app/services/plans.service';


interface JobType {
  value: string;
  viewValue: string;
}

interface WorkEnv {
  value: string;
  viewValue: string;
}


@Component({
  selector: 'app-post-job',
  templateUrl: './post-job.component.html',
  styleUrls: ['./post-job.component.css']
})

export class PostJobComponent implements OnInit {

  jobTypes: JobType[] = [
    {value: 'type-0', viewValue: '全职'},
    {value: 'type-1', viewValue: '兼职'},
    {value: 'type-2', viewValue: '自由职业'},
 
  ];

  workEnvs: WorkEnv[] = [
    {value: 'type-0', viewValue: '远程'},
    {value: 'type-1', viewValue: '混合'},
    {value: 'type-2', viewValue: '现场'},
 
  ];

  jobForm = this.fb.group({ 

    jobTitle: this.fb.group({
      title: ['', [Validators.required, Validators.minLength(2), Validators.pattern('^[_A-z0-9]*((-|\s)*[_A-z0-9])*$')]],
      jobType: ['', [Validators.required]]
    }),

   })

   plans: any;
  
  constructor(private fb: FormBuilder, private service:PlansService) {
   }

  ngOnInit(): void {

    this.service.getPlans()
      .subscribe(response => {
        this.plans = response;
        console.log(response);
      });
    
  }



   // Getter method to access formcontrols
   get myForm() {
    return this.jobForm.controls;
  }

 
  // Submit Registration Form
  // onSubmit() {
  //   this.submitted = true;
  //   if(!this.jobForm.valid) {
  //     alert('Please fill all the required fields to create a super hero!')
      
  //   } else {
  //     console.log(this.jobForm.value)
  //   }
  // }

}

Component.html file

<div class="subscription-container" >
  <div class="card" *ngFor="let plan of plans " >
      <h1>{{plan.title}}</h1>
  </div>
</div>

The data shows up in my console.log but doesn't render at all on the card. Please help, thank you!

I tried adding a dummy array in the ts file and printing it to the console log, but it still doesn't render in the div.

P粉450744515
P粉450744515

reply all(1)
P粉785522400

You can load your plan asynchronously.

  1. Create an observable object public plans$: Observable<any>

  2. Assign your subscription this.plans$ = this.service.getPlans();

  3. Conditionally Rendering in Your HTML

<ng-container *ngIf="plans$ | async as plans">
 <div *ngFor="let plan of plans">
  {{ plan | json }} 
 </div>
</ng-container>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!