Size: a a a

Angular - русскоговорящее сообщество

2021 April 14

ВС

Валера Солдатов... in Angular - русскоговорящее сообщество
Получить проблему с глобальным скоупом там, где ее быть не должно...
источник

В

Владимир in Angular - русскоговорящее сообщество
что значит "событие"? Если речь про экшены, то не надо придумывать лишних сущностей, не важно какой компонент инициирует экшен - он просто должен быть обработан редюссером и соответствующим образом изменено состояние стейта. Если в цепочке событий присутствует работа с внешним источником (бек), то в дело вступит эффект. Тут опять же не надо придумывать лишних сущностей - если возвращаемые данные консистентны, то все экшены получат последний ответ. Если уникальны - экшен должен иметь идентификатор. Что опять же реализовано через добавление к экшену id
источник

E

Evgeniya in Angular - русскоговорящее сообщество
а как добавляется к экшену id?
источник

В

Владимир in Angular - русскоговорящее сообщество
@Injectable()
class TodoEffects {
 loadTodo$ = createEffect(() =>
   this.actions$.pipe(
     ofType('GET_TODO'),
     fetch({
       id: (todo: GetTodo) => {
         return todo.id;
       },

       // provides an action
       run: (todo: GetTodo) => {
         return this.backend.getTodo(todo.id).map((response) => ({
           type: 'LOAD_TODO_SUCCESS',
           todo: response.todo,
         }));
       },

       onError: (action: GetTodo, error: any) => {
         // dispatch an undo action to undo the changes in the client state
         return null;
       },
     })
   )
 );
источник

В

Владимир in Angular - русскоговорящее сообщество
копипаста из доки
источник

E

Evgeniya in Angular - русскоговорящее сообщество
спасибо!
источник

В

Владимир in Angular - русскоговорящее сообщество
не за что)) хотя мне еще здорово резануло слух "2 компонента вызывают одно событие". Компонент ВООБЩЕ не должен знать о том, что в принципе существуют такие понятия как события. Компонент это холст на котором рисуется верстка, в современном сленге - с обратной связью, то есть понимающий что по нему нажали. Он просто рисует и кричит при необходимости "на меня нажали". Услышать этот крик, понять каких действий он требует и запустить цепочку событий для обработки, получить ответ и отдать его компоненту - это работа ДРУГОГО блока, как минимум сервиса а в идеале вообще модуля
источник

В

Владимир in Angular - русскоговорящее сообщество
когда у вас компоненты начнут генерить экшены - ждите сложностей)))
источник

E

Evgeniya in Angular - русскоговорящее сообщество
поэтому у меня есть фасад сервис, чтобы компоненты меньше знали.
источник

E

Evgeniya in Angular - русскоговорящее сообщество
только этот фасад использует еще и гуард. И вот кто вызвал экшен непонятно. Так что думаю плодить больше экшенов
источник

В

Владимир in Angular - русскоговорящее сообщество
если что-то требует дублирования кода - что-то пошло не так))
источник

SA

Saqhan Abaev in Angular - русскоговорящее сообщество
Привет, есть такая задача: нужно создать кнопку типа «на верх», чтобы при клике она прокручивала до нужного блока, и когда на верху - исчезала. Подскажите статью на эту тему в ангуляре, в гугле все выходит на Jquery
источник

НЧ

Никита Чеботов... in Angular - русскоговорящее сообщество
источник

В

Владимир in Angular - русскоговорящее сообщество
напиши директиву, которая считывает скролл страницы, и кидает false если скролл от нужного блока нулевой. Повесь директиву на кнопку и по срабатыванию отключай видимость кнопки
источник

НЧ

Никита Чеботов... in Angular - русскоговорящее сообщество
Element.scrollIntoView()
Прокручивает родителя так чтобы element был виден пользователю
источник

SA

Saqhan Abaev in Angular - русскоговорящее сообщество
это я понял, хотел узнать как узнать что внизу страницы или сверху, чтобы манипулировать кнопкой.
источник

НЧ

Никита Чеботов... in Angular - русскоговорящее сообщество
Чуть позже скину если никто не подскажет. Сейчас не за компом
источник

PK

Poli Keres in Angular - русскоговорящее сообщество
Ребят, подскажите какая з/п будет считаться привлекательной для фронтенда на Angular (плюс Ionic) c опытом на стеке от 2-х лет, но чтобы был уверенный Middle? проект ВКС
источник

В

Владимир in Angular - русскоговорящее сообщество
import {Directive, ElementRef, Inject, Renderer2} from '@angular/core';
import {fromEvent, Observable} from 'rxjs';
import {
 distinctUntilChanged,
 map,
 startWith,
 takeUntil,
} from 'rxjs/operators';
import {DestroyService} from './destroy.service';
import {WINDOW} from './window-token';


const THRESHOLD = 180;

@Directive({
 selector: '[appScrolled]',
 providers: [DestroyService]
})
export class ScrolledDirective {
 constructor(
   @Inject(DestroyService) destroy$: Observable<void>,
   @Inject(WINDOW) windowRef: Window,
   renderer: Renderer2,
   {nativeElement}: ElementRef<HTMLElement>
 ) {
   fromEvent(windowRef, 'scroll')
     .pipe(
       map(() => windowRef.scrollY),
       // @ts-ignore
       map(next => next > (document.getElementById('hero').getBoundingClientRect().top + pageYOffset + THRESHOLD)),
       distinctUntilChanged(),
       startWith(true),
       takeUntil(destroy$)
     ).subscribe(scrolled => {
     renderer.setAttribute(nativeElement, 'data-scrolled', String(scrolled));
   });
 }

}
источник

PK

Poli Keres in Angular - русскоговорящее сообщество
только речь не про хотелки, а про среднее на рынке
источник