Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (8)

Лучшие ответы пользователя

Все ответы (12)
  • Где можно найти видео-туториал по связке ангуляр и материал дизайн?

    @antoart
    Web developer
    Дима Долготер
    Отрадно видеть устремленного в высь человека :)
    1. Как заметил товарищ, ангуляр материалс - это просто набор компонентов. Скажу по опыту, хороших компонентов. Просто эдакие кубики, как , например.
    2. Для освоения ангуляра потребуется чтение официальной доки angular.io. Я в свое время начинал с https://metanit.com/web/angular2/.
    Насчет видеоуроков соглашусь немного. Тебе будет сложно найти "ИМЕННО ТОТ САМЫЙ" видеоурок. Их просто напросто очень много. Лучше начни с документации, а по мере возникновения вопросов ищи конкретно.

    p.s. таблички делать - это хорошо ))
    Ответ написан
    2 комментария
  • Почему возникает ошибка парсинга html?

    @antoart
    Web developer
    Привет, Николай Семенов.
    Ну ты же на самом деле хочешь ответ, как сделать, чтобы работало?)))
    Будет тебе ответ. Но вначале ответ на твой прямой вопрос - ангуляр так не умеет. Туда, в квадратные скобки, можно передать значение выражения, но не само выражение, при этом chartData[indicators] тоже прокатит. Так что так нельзя.

    Но если очень хочется то используй Pipe.
    Это. кстати, гораздо лучше, чем использовать метод, производительность лучше. Но хозяин барин.

    Итак варианты:
    1. так себе. Если ты в doCheck() посмотришь сколько раз будет вызван метод getFilteredData(), то будет долго глаз дергаться.
    <p-multiSelect [options]="getFilteredData()" [(ngModel)]="textAuxiliaryAxis"
              maxSelectedLabels=3 defaultLabel="Выберите параметр" filterPlaceHolder="Поиск" (onChange)="delGraph($event, 'auxiliary')">
            </p-multiSelect>


    2. Вариант хороший и оптимальный
    <p-multiSelect [options]="chartData[indicators] | myCoolPipe: 'main' " [(ngModel)]="textAuxiliaryAxis"
              maxSelectedLabels=3 defaultLabel="Выберите параметр" filterPlaceHolder="Поиск" (onChange)="delGraph($event, 'auxiliary')">
            </p-multiSelect>
    
    @Pipe( selector: 'myCoolPipe')
    export class MyCoolPipe implements PipeTransform {
      public transform(value: any, filter: string = ''): string {
       if (value) {
           return value.filter(v => v.axis !== filter);
       }
    }


    Pipe кэширует запросы и не запускается миллиард раз.
    Ответ написан
    Комментировать
  • Как создать фильтр по таблице?

    @antoart
    Web developer
    Добавлю про сам фильтр, ибо Alex уже высказался об общей концепции.

    Если данных для таблицы много, то для фильтра отправляй каждый раз запрос на сервер.
    Если данных столько, что ты их видишь всегда сразу, то фильтруй просто в компоненте. *ngFor поможет.

    Тебе потребуется знание bananaInTheBox [(ngModel)] https://angular.io/api/forms/NgModel
    Ответ написан
    Комментировать
  • Как сделать анимированный переход между роутами в Angular 2+?

    @antoart
    Web developer
    Если человеческим языком об общей концепции.
    Когда осуществляется роутинг, то компонент источник помирает, а компонент по роуту оживает. Для источника ты создаешь анимашку на уход, а для цели - анимашку на создание компонента.
    В любом случае будет помер - ожил.
    Ответ написан
    Комментировать
  • Как реализовать ControlValueAccessor?

    @antoart
    Web developer
    Привет.
    Буду опираться на твой же код.

    Реализация данного интерфейса позволяет ангуляровской форме взаимодействовать с кастомным компонентом. В метод
    writeValue(value: any) {
       this.formControlName = value;
      }

    прокидывается то значение, которое ты передаешь в formControlName. Заметь, это не Binding, как между компонентами. Чтобы значение передалось надо сказать форме прямо и конкретно
    form.setValue({email: "email", password: 'passworddd'})
    // или 
    form.patchValue({email: "email"})


    А чтобы динамически считать значение, которое ты прокинешь через функцию this.propagateChange(val) , надо уже работать с изменением формы
    this.filterForm.valueChanges
          .pipe(
            takeUntil(this._onDestroy$)
          )
          .subscribe((val) => {
           console.log(val);
          });


    И ты пойми что же ты хочешь. Прокидывать параметры в компонент (binding) или прокидывать значение формы в компонент (ControlValueAccessor).

    p.s. напиши в своем коде, и посмотри как в консоль валятся значения формы из уже дочернего компонента.
    initForm() {
        this.SignupReactiveForm = this.fb.group({
          password: ['password', [
            Validators.required,
            Validators.pattern(/[A-z]/)
          ]
          ],
          email: ['email', [
            Validators.required, Validators.email
          ]
          ],
          
    
        });
      }
    
    }
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (8)