2016-12-01 2 views
1

Я новичок в разработке интерфейсов и Angular2.Angular2, использующий трубку даты для массива дат

Я пишу приложение, где мне дают fromDate и endDate, и приложение должно отображать диапазон дат. Например, fromDate = '10/02/2016' endDate = '11/02/2016', приложение отобразит диапазон дат как: 10-11 февраля 2016 года, и этот формат диапазона дат может измениться в будущем (также необходимо учитывать случаи, когда, конечно, месяцы или годы).

Моя мысль заключается в использовании СЦЕПЛЕНИЕ трубы: {{ dateArray | date: 'dd/MM/yyyy' | rangeDate}} где dateArray = [fromDate, endDate] и я надеюсь, {{ dateArray | date: 'dd/MM/yyyy'}} может вернуть две отформатированные строки даты (в массиве), так что я могу затем использовать свой собственный трубопровод Я творю:

import {Pipe, PipeTransform} from '@angular/core'; 

@Pipe({name: 'dateRange'}) 
export class DateRangePipe implements PipeTransform { 
    transform(value: string[], args: any[]) { 
    return "desired output"; 
    } 
} 

легко манипулировать двумя строками, получить желаемый результат.

Но это неправильно, потому что Угловая 2 Дата трубы не может передать более одного значения даты в строку, а его тип возврата - string, а не string[].

Так что мне было интересно, есть ли способ написать для цикла в стиле HTML для достижения этой задачи. Например, он принимает date[] и отправляет каждый его элемент в трубку даты и объединяет результаты в string[] и отправляет их на dateRange pipe.

ответ

1

Труба date не поможет вам здесь, потому что: а) как вы уже поняли, дата трубы не принимает массив в качестве входа; б) у вас есть особые требования к переводу двух дат во что-то, что представляет собой фактически смешанную часть их представления, которая в дате не знает, как это сделать. Вам необходимо реализовать свой собственный трубопровод dateRange (вид того, что вы пытаетесь), который будет принимать массив дат и получить одну строку, отформатированную по вашему желанию в качестве выхода.

Смежные вопросы