@Coder321

Как динамически проверять путь роута в Angular 5?

Есть роут типа date/:date в котором date соответственно дожно быть датой типа 20.12.2018. Первая проблема это то что роутер не принимает точки в дате и при перегрузки соответственного роута говорит "Cannot GET /date/20.12.2018"?, а вторая это то что мне нужно динамически проверить или эта дата правильна и если нет, то заменить ее на коректную, как такое сделать?
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dmitrygavrish
Для начала можно изменить формат даты и использовать в качестве разделителя, например, дефис (20-12-2018).

Решается следующим образом:
1) в конструктор компонента инжектим private _activatedRoute: ActivatedRoute и private _router: Router
2) подписываемся (предпочтительней в ngOnInit) на ActivatedRoute и обрабатываем значение параметра роута:
this._activatedRoute.paramMap.subscribe((params: ParamMap) => {
    let date: string = params.get('date'); 

    if (/*если дата неправильна*/) {
      date = ...; // изменим дату на корректную
      this._router.navigate(['/date', date]);
    }
  })


Если потребуется валидировать дату с помощью нативного js конструктора Date, учтите, что валидным будет создание объекта new Date('mm-dd-yyyy'), т.е. new Date('20-12-2018') выдаст Invalid Date, т.к. 20-ого месяца не существует.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы