Ответы пользователя по тегу Angular
  • Проблема при подключении app.component.ts?

    @Makito
    свойство декоратора template используется для встроенного шаблона, а вам надо templateUrl юзать, помимо этого у вас синтаксическая ошибка, точку с запятой уберите после объявления декоратора:
    @Component({
      selector: 'my-app',
      templateUrl: './app.component.html'
    })
    export class AppComponent  {}
    Ответ написан
  • Оптимальный способ работы с router-outlet?

    @Makito
    Как по мне, если есть несвязанные иерархически компоненты, то для обмена данными между ними, надо юзать какую нить шину данных. Здесь два варианта - либо родитель получает данные и через шину делится ими с потомками, либо то же самое делает потомок.
    По другому вроде никак.
    Ответ написан
  • [Angular] Выбор данных для выпадающего списка (typeahead) - правильно ли сделано?

    @Makito
    Ну во-первых у вас как то странно работает сам поиск, получается что вы каждый раз загружаете всех пользователей и потом по этой выборке локально ищите вхождения.
    Вам нужно либо один раз при инициализации загрузить весь список пользователей и положить его к примеру в _source а потом при вводе текста фильтровать этот список и не мучить сервер запросами, либо если пользователей много то на сервере должен быть реализован метод для поиска сотрудников по строке.
    Во-вторых, да, код написан не совсем верно.
    Если вы хотите чтобы сервер искал и возвращал только подходящее то:
    Observable.fromEvent(this.myInput.nativeElement, 'input')
        .debounceTime(500)
        .map(e => e.target.value)
        .switchMap(searchText => this.http.get(`URL_API&q=${searchText}`))
        .map(res => res.json())
        .subscribe(users => this.userNames = users);


    Если же вы хотите искать по локально сохранённой коллекции пользователей то:
    Observable.fromEvent(this.myInput.nativeElement, 'input')
        .debounceTime(500)
        .do(e => this.searchText = e.target.value)
        .switchMap(() => Observable.from(this._source))
        .subscribe(users => this.userNames = users.map(item => item.fullName)
                   .filter(item => item.toLowerCase().includes(searchText.toLowerCase())));

    Мой код может быть не на все сто рабочим но общий посыл должен быть таким.
    Ответ написан
  • Почему ViewChild не видит динамически созданные div?

    @Makito
    Недавно столкнулся с аналогичной задачей - нужно было собрать все динамически сгенерированные компоненты со страницы.
    Для этого использовал декоратор ViewChildren и QueryList.
    @ViewChildren(Combobox) combo: QueryList<Combobox> = new QueryList<Combobox>();

    После этого все компоненты со страницы будут доступны в combo в виде массива
    this.combo.toArray();
    Так же на него можно навесить обсервер для отслеживания добавляемых компонент динамически
    this.combo.changes.subscribe(...);
    Так же помимо ViewChildren есть ContentChildren, возможно как раз таки он вам и подойдёт.
    Похоже вам копать в эту сторону.
    Ответ написан