0

当我尝试运行我的代码时,我得到了这个错误。

在此处输入图像描述

我不知道为什么。我曾尝试更改它以尝试使其正常工作,但它只是拒绝。

我正在尝试在离子段之间切换并显示来自 firebase 存储的数据。

发现.page.html:

<ion-content class="ion-padding">
  <ion-segment value="artist" [(ngModel)]="switchSegment" (click)="onFilterUpdate()">
    <ion-segment-button value="viewArtist">Artist</ion-segment-button>
    <ion-segment-button value="viewVenue">Venue</ion-segment-button>
  </ion-segment>

  <div [ngSwitch]="switchSegment">
    <div *ngSwitchCase="'viewArtist'">
  <ion-grid *ngIf="relevantArtist.length > 0">
      <ion-row>
        <ion-col size="12" size-sm="8" offset-sm="2">
          <ion-card
            fill="clear"
            [routerLink]="['/','tabs','tab1','discover',relevantArtist[0].id]"
          >
            <ion-card-header>
              <ion-row>
                <ion-col class="ion-text-right">
                  <ion-button fill="clear" (click)="addToWatch()"></ion-button>
                  <ion-icon name="star-outline"></ion-icon>
                </ion-col>
              </ion-row>
              <ion-card-title>{{ relevantArtist[0].name }}</ion-card-title>
              <ion-card-subtitle
                >{{ relevantArtist[0].cost | currency: "€&quot; }} /
                Night</ion-card-subtitle
              >
            </ion-card-header>
            <ion-img [src]="relevantArtist[0].imageUrl"></ion-img>
            <ion-card-content>
              <!-- <p>Rating: {{ relevantArtist[0].rating | percent}}</p> -->
              <p>Genre: {{ relevantArtist[0].genre }}</p>
              <p>Equipment: {{ relevantArtist[0].equipment }}</p>
            </ion-card-content>
          </ion-card>
        </ion-col>
      </ion-row>
      <ion-row>
        <ion-col size="12" size-sm="8" offset-sm="2">
          <ion-card
            *ngFor="let artist of relevantArtist.slice(1)"
            fill="clear"
            [routerLink]="['/','tabs','tab1','discover',artist.id]"
          >
            <ion-card-header>
              <ion-row>
                <ion-col class="ion-text-right">
                  <ion-button fill="clear" (click)="addToWatch()"></ion-button>
                  <ion-icon name="star-outline"></ion-icon>
                </ion-col>
              </ion-row>
              <ion-card-title>{{ artist.name }}</ion-card-title>
              <ion-card-subtitle
                >{{ artist.cost | currency: "€&quot; }} / Night</ion-card-subtitle
              >
            </ion-card-header>
            <ion-img [src]="artist.imageUrl"></ion-img>
            <ion-card-content>
              <!-- <p>Rating: {{ artist.rating | percent}}</p> -->
              <p>Genre: {{ artist.genre }}</p>
              <p>Equipment: {{ artist.equipment }}</p>
              <!-- <ion-buttons slot="end">
              <ion-button (click)="toggleFavorite()">
                <ion-icon *ngIf="!isFavorite" slot="icon-only" name="star-outline"></ion-icon>
                <ion-icon *ngIf="isFavorite" slot="icon-only" name="star"></ion-icon>
              </ion-button>
            </ion-buttons> -->
            </ion-card-content>
          </ion-card>
        </ion-col>
      </ion-row>
    </ion-grid>
  </div>
</div>

<div [ngSwitch]="switchSegment">
  <div *ngSwitchCase="'viewVenue'">
    <ion-grid *ngIf="relevantVenue.length > 0">
      <ion-row>
        <ion-col size="12" size-sm="8" offset-sm="2">
          <ion-card
            fill="clear"
            [routerLink]="['/','tabs','tab1','discover',relevantVenue[0].id]"
          >
            <ion-card-header>
              <ion-row>
                <ion-col class="ion-text-right">
                  <ion-button fill="clear" (click)="addToWatch()"></ion-button>
                  <ion-icon name="star-outline"></ion-icon>
                </ion-col>
              </ion-row>
              <ion-card-title>{{ relevantVenue[0].name }}</ion-card-title>
              <ion-card-subtitle
                >{{ relevantVenue[0].cost | currency: "€&quot; }} /
                Night</ion-card-subtitle
              >
            </ion-card-header>
            <ion-img [src]="relevantVenue[0].imageUrl"></ion-img>
            <ion-card-content>
              <!-- <p>Rating: {{ relevantVenue[0].rating | percent}}</p> -->
              <p>Genre: {{ relevantVenue[0].genre }}</p>
              <p>Equipment: {{ relevantVenue[0].equipment }}</p>
            </ion-card-content>
          </ion-card>
        </ion-col>
      </ion-row>
      <ion-row>
        <ion-col size="12" size-sm="8" offset-sm="2">
          <ion-card
            *ngFor="let venue of relevantVenue.slice(1)"
            fill="clear"
            [routerLink]="['/','tabs','tab1','discover',venue.id]"
          >

发现.page.ts:

export class DiscoverPage implements OnInit, OnDestroy {
  loadedArtist: Artist[];
  loadedVenue: Venue[];
  relevantArtist: Artist[];
  relevantVenue: Venue[];
  switchSegment: string;

  private artistSub: Subscription;
  private venueSub: Subscription;

  constructor(
    private artistService: ArtistService,
    private venueService: VenueService,
    private authService: AuthService
  ) { }

  ngOnInit() {
    this.artistSub = this.artistService.artist.subscribe(artist => {
      this.loadedArtist = artist;
      this.relevantArtist = this.loadedArtist;
      this.loadedArtist = this.relevantArtist.slice(1);
    });
    this.venueSub = this.venueService.venue.subscribe(venue => {
      this.loadedVenue = venue;
      this.relevantVenue = this.loadedVenue;
      this.loadedVenue = this.relevantVenue.slice(1);
    });
  }

  ionViewWillEnter() {
    this.artistService.fetchArtist().subscribe();
    this.venueService.fetchVenue().subscribe();
    this.switchSegment = 'viewArtist';
  }

  addToWatch() {
    console.log('favourite clicked..');
  }

  ngOnDestroy() {
    if (this.artistSub) {
      this.artistSub.unsubscribe();
    }
    if (this.venueSub) {
      this.venueSub.unsubscribe();
    }
  }

  onFilterUpdate(event: CustomEvent<SegmentChangeEventDetail>) {
    if (event.detail.value === 'viewArtist') {
      this.relevantArtist = this.loadedArtist;
      this.loadedArtist = this.relevantArtist.slice(1);
    } else {
      this.relevantArtist = this.loadedArtist.filter(
        artist => artist.userId !== this.authService.userId);
    }
    if(event.detail.value === 'viewVenue') {
    this.relevantVenue = this.loadedVenue.slice(1);
  } else {
    this.relevantVenue = this.loadedVenue.filter(
      venue => venue.userId !== this.authService.userId);
  }
  }

}

首次加载屏幕时,它会显示 relativeArtist。只有当我更改段值时才不会显示相关地点并出现错误。

4

0 回答 0