Динамически изменять угловой путь Firebase после NgOnIt

Вот самое короткое, что я могу получить:


Это будет работать во всех браузерах, с которыми я столкнулся.

Как я туда попал:

  • Вы можете просто называть getFullYear непосредственно на вновь созданной Date, не нуждаясь в переменной. new Date().getFullYear() может показаться немного странным, но он надежен: сначала выполняется часть new Date(), затем .getFullYear().
  • Вы можете удалить type, поскольку JavaScript по умолчанию; это даже документировано как часть спецификации HTML5 , которая, вероятно, в этом случае должна записывать, какие браузеры уже делают.
  • Вы можете оставить точку с запятой в конце для одного дополнительный сохраненный символ, потому что JavaScript имеет «автоматическую точку с запятой», функцию, которую я обычно презираю и рельс против, но в этом конкретном случае использования он должен быть достаточно безопасным.

Важно отметить, что это работает только в браузерах, где включен JavaScript. В идеале, это будет лучше обрабатываться как автономное пакетное задание (скрипт sed на * nix и т. Д.) Один раз в год, но если вы хотите использовать решение для JavaScript, я думаю, что это так короче, как это получается. (Теперь я ушел и искушал судьбу.)

0
задан lifespunchingbag 3 March 2019 в 15:59
поделиться

1 ответ

Вы должны убедиться, что ваш params uid не определен.

import { Component, ElementRef, NgModule, NgZone, OnInit, ViewChild, Input, Output, EventEmitter } from '@angular/core';
import { FormControl, FormsModule, ReactiveFormsModule } from "@angular/forms";
import { BrowserModule } from "@angular/platform-browser";
import { AngularFireDatabase } from '@angular/fire/database';
import { Observable, Subscription } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import {
  DateAdapter,
  NativeDateAdapter,
  MAT_DATE_FORMATS,
  MAT_DATE_LOCALE
  } from "@angular/material/core";

import * as moment from "moment";

import { DatabaseService } from 'src/app/database.service'

const CUSTOM_DATE_FORMATS = {
  parse: {
    dateInput: { month: "short", year: "numeric", day: "numeric" }
  },
  display: {
    dateInput: "input",
    monthYearLabel: { year: "numeric", month: "short" },
    dateA11yLabel: { year: "numeric", month: "long", day: "numeric" },
    monthYearA11yLabel: { year: "numeric", month: "long" }
  }
};
const dateFormat = "DD-MM-YY";

class AppDateAdapter extends NativeDateAdapter {
format(date: Date, displayFormat: Object): string {
if (displayFormat === "input") {
  return moment(date).format(dateFormat);
} else {
  return date.toDateString();
}}}    

export class HistoryComponent implements OnInit, OnDestroy {

  get data(): string {return this.databaseService.serviceData;}

  set data(date) {this.databaseService.serviceData=moment(date).format(dateFormat));} 
  snaps: Observable<any[]>;
  uid: string;

  @Input() placeholder;
  @Output() onFilter: EventEmitter<any> = new EventEmitter<any>();
  @Input() selectedValue;
  @Output() selectedValueChange: EventEmitter<any> = new EventEmitter<any>();
  routeSub: Subscription;
  constructor(
    private db: AngularFireDatabase,
    private ngZone: NgZone,
    private afs: AngularFirestore,
    public databaseService: DatabaseService,
    private route: ActivatedRoute
  ){ }

  ngOnInit() {    
     this.routeSub =  this.route.params
          .subscribe(params => {
            this.uid = params('uid');
            this.snaps = db.list(`snapity-tests/${this.databaseService.serviceData}/${this.uid}`).valueChanges();   
      })
    }

ngOnDestroy(){
  if(this.routeSub){
      this.routeSub.unsubscribe();
  }
}
  onChange($event) {
    this.selectedValue = this.updateDate($event.value);
    this.onFilter.emit(this.data);
  }

  updateDate(date) {
    let formatedDate;
    if (date !== undefined) {
      formatedDate = moment(date).format(dateFormat);      
    }    
    this.selectedValueChange.emit(formatedDate);  
    return formatedDate;   
  }

}}

Я вижу, у вас есть this.databaseService.serviceData, но я не могу найти ни одного this.databaseService, определенного в вашем конструкторе, и я не уверен, что находится в конце serviceData.

Путь firebase должен быть string, если this.databaseService.serviceData не является переменной, возвращающей string, тогда я сомневаюсь, что вы получите что-нибудь от firebase. Поэтому ваш путь неверен.

0
ответ дан LearnToday 3 March 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: