роутинг и дочерний компонент показывается через <router-outlet></router-outlet>.
Вопрос: как можно передать вводимое в инпут значение из родительского элемента в дочерний?
То что я нашла предполагает, что дочка подключения через селектор элемент и ты просто передаешь пропсом.
Например:
<app-resilt></result>, но у меня же не элемент селектор, а <router-outlet></router-outlet>.
Так как мне передать пропс со значением из поля инпут в дочерний элемент?
Можно через behaviorSubject, используя сервис
Подскажите, пожалуйста, какой сервис.
https://stackblogger.com/sharing-data-between-components-rxjs-angular/
если коротко: - некоторый класс с состоянрем и поведением - делаете его @Injectable() - провайдите его в родителе (где outlet) - инжектите в родителе и компоненте, который будет в аутлете - в родителе пишете данные в сабжект - в дочернем подписываетесь на сабжект
Подскажите, при вводе нового значения в поле инпут, передаваемые данные будут также динамически меняться?
что значит "передаваемые данные меняться"?
У меня в родителе инпут поля поиск. Мне надо динамически получать с него значения при каждом вводе.
погодите, вы под ипутом понимаете <input/> или @Input() компонента?
Тег инпут, поле ввода
инпут -> ввели данные -> эти данные отправили куда-то в др компонент зачем вы эти данные хотите динамически менять?
Я наверно не так описала. Не сами передаваемые данные, а значение, вводимое в поле инпута. Пример, я ввожу слово "js", оно передается в другой компонент для обработки БД (например, фильтр). Затем ваодится другое значение, положим "angular", оно также передается в другой компонент, где данные БД уже фильтруются по этому слову.
тут надо наверное иначе организовать все что значит передает? Пушит в сервис значение?
я бы вот так сделал сервис-првоайдер данных, который ищет "в бд", отпарвляет запросы крч ему надо критерии передать, он возвращает стрим // service class SearchService { searchFilter$ = new Subject() search(s: string) { this.searchFilter$.next(s) } loadData(s: string) { return this.searchFilter$ .pipe( switchMap(s => this.http.get(....)) ) } } // component1 onChangeSearch(newVal: string) { this.searcher.search(newVal) } // component2 data$ = this.searcher.loadData()
Спасибо, попробую
фигню написал, сори, спрсоони
Если я правильно понял то в сервисе создаем observable, в комопненте подписываемся на input valueChanges и пишем в observable сервиса, затем в источник данных для чайлд компонента подписываемся на этот observable ( возможно прямо в сервисе по работе с api можно его притянуть а не в сам компонент )
Да. Я это и пытаюсь сейчас сделать.
Обсуждают сегодня