Задать вопрос
Контакты

Достижения

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

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

Все теги (4)

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

Все ответы (15)
  • Как в Angular динамически задать компонент?

    navix
    @navix
    Angular & TypeScript
    Для динамического рендера компонента есть структурная директива *ngTemplateOutlet:

    <ng-container *ngTemplateOutlet="comp"></ng-container>


    https://angular.io/api/common/NgTemplateOutlet
    Ответ написан
    Комментировать
  • Чем заменить Observable.interval на Angular 5?

    navix
    @navix
    Angular & TypeScript
    Раньше было 2 основных способа: добавление всего rxjs глобально или локальное добавление импорта import 'rxjs/add/observable/interval' в нужных файлах.

    Но это неудобно по многим причинам. Поэтому в rxjs@5.5 переработали эту систему.
    Теперь, чтобы уменьшить итоговый размер бандлов и добавить управляемости коду, нужно просто импортировать нужные функции.

    В вашем случае:
    import { interval } from 'rxjs/observable/interval';
    ...
    const intervalObs = interval(100);
    ...


    Тоже самое касается и операторов.
    Больше почитать про lettable operators можно тут: https://dev.nvx.me/2017/101-rxjs-lettable-operators/

    И тогда ваш пример будет выглядеть так:
    import { Component } from '@angular/core';
    import { interval } from 'rxjs/observable/interval';
    import { takeWhile, tap } from 'rxjs/operators';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    export class AppComponent {
      title = 'app';
    
      max = 1;
      current = 0;
    
      start() {
        const intervalObs = interval(100);
    
        intervalObs.pipe(
            takeWhile(_ => isFinished),
            tap(i => current += 0.1),
        ).subscribe();
      }
    Ответ написан
    Комментировать
  • Angular2 как записать данные input в под-элемент?

    navix
    @navix
    Angular & TypeScript
    Полем внутри FormGroup может быть как FormControl, так и еще один FormGroup.

    И тогда билд формы будет выглядеть так:
    this.createForm = this.fb.group({
        ...
        contacts: this.fb.group({
            telephones: ['', []],
            emails: ['', []],
            postals: ['', []]
        })
    });


    Html:
    <form [formGroup]="createForm">
       <div formGroupName="contacts">
          ...
         <input type="text" name="firstName" placeholder="" formControlName="emails">
         ...
    Ответ написан
    1 комментарий
  • Как передать значение в шаблон?

    navix
    @navix
    Angular & TypeScript
    В конструкторе еще нет значения Input-параметров. Поэтому тут лучший вариант использовать хук ngOnChanges.

    ...
    ngOnChanges() {
      this.svg = this.sanitizer.bypassSecurityTrustHtml(this.svgshow);
    }
    Ответ написан
    1 комментарий
  • Variable is undefined / Angular 4 service?

    navix
    @navix
    Angular & TypeScript
    Тут есть несколько не совсем корректных мест.
    Но, если говорить об основной проблеме, то нужно смотреть, что передается в метод getPerson.

    this.route.params - это Observable и при изменении роута, там приходят новые значения.

    Так же не следует создавать сайд-эффекты (влиять на переменные все самой функции) на мап-операторе, ошибки связанные с этим достаточно сложно отлавливать.

    Я бы переписал этот код так:
    ngOnInit() {
      this.route.params.pluck('id').subscribe(id => {
        this._PersonService.getPerson(+id).subscribe(person => this.person = person);
      });
    }


    Все еще возможно, что это не решит проблему, но поможет двигаться дальше.
    Ответ написан
    2 комментария