Задать вопрос
  • Как периодически возвращать асинхронные значения?

    dasha_programmist
    @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    ты возвращаешь Observable а тебе надо его распаковать
    return Observable.timer(0, 3000).flatMap(()=>this.httpClient.get(Config.host + `tasks`)).map((r) => {
          console.log(r);
          return r;
        });
    Ответ написан
    Комментировать
  • Нужно ли знать TypeScript для работы с Angular 4?

    @cluberr
    Ответ написан
    Комментировать
  • Почему subscribe() не видит nativeElement?

    search
    @search
    мама говорит что я особенный
    Потому что на момент выполнения кода в subscribe(), элемента с id=graph еще не существует. *ngIf отрисует этот элемент не мгновенно после this.trainings = trainings, а только после выполнения функции subscribe().

    Для того чтоб код не имел неприятного запаха из-за setTimeout(), можно передавать trainings в GraphComponent извне. Тогда это будет выглядеть как-то так:

    <app-graph  [trainings]="trainings" *ngIf="trainings.length"></app-graph>
    Ответ написан
    Комментировать
  • Как реализовать Pagination на Angular2?

    @cluberr
    Тебе нужно сделать стейт в котором будет
    1) общее количество элементов (countAll)
    2) номер текущей страницы (currentPage)
    3) количество элементов на странице (pageSize)
    ну и через сервис шлешь запрос на сервер с параметрами (LIMIT и OFFSET )
    LIMIT - количество записей на странице
    OFFSET - номер страницы на количество элементов на странице (currentPage*pageSize)
    или здесь посмотри как сделано https://vmware.github.io/clarity/documentation/v0....
    Ответ написан
    Комментировать
  • Как быстро подключить angular material?

    StivinKing
    @StivinKing
    Делайте всё структурировано, к примеру, для подключения material в директории app/shared у нас директория material с 2-мя файлами:
    material.module.ts
    import { NgModule } from '@angular/core';
    import {  
    MatButtonModule,
    MatInputModule,
    MatCardModule,
    MatCheckboxModule,
    // ...
    } from '@angular/material';
    
    @NgModule({
      exports: [
        MatButtonModule,
        MatInputModule,
        MatCardModule,
        MatCheckboxModule,
        // ...
      ]
    })
    export class MaterialModule { }

    index.ts (для удобного последующего импорта)
    export { MaterialModule } from './material.module';


    В shared.module.ts экспортируем данный модуль:
    // ...imports
    import { MaterialModule } from './material';
    
    @NgModule({
      exports: [
        // ...exports
        MaterialModule,
      ]
    })
    export class SharedModule { }

    Легко манипулировать - добавлять нужное, убирать не нужное

    Сильно ли это повлияет на производительность? Всё таки я не все компоненты библиотеки материал использую в проекте.

    То что не используется но импортируется в вашем модулей, так же будет собрано при сборке приложения, а значит будут просто лежать ненужным грузом занимая n-времени на загрузку приложения.
    Ответ написан
  • Как вызвать событие click input file по нажатию на картинку на angular?

    ozknemoy
    @ozknemoy
    яваскриптист
    можно сунуть картинку фоном в label и сослаться им на инпут
    Ответ написан
    Комментировать
  • Как создать поиск на angularjs?

    На input вешаете ngChange, и слушаете изменения. Желательно с ng-modeloptions={debounce: '500'} хотя бы, чтобы не дергалось всё после каждого ввода.
    В обработчике изменения простой Array.filter с нужными параметрами.
    Можно это сделать и через filter, но мне такой вариант не очень нравится.
    Ответ написан
    2 комментария
  • Как сделать unsubscribe?

    @IKMOL
    Coder321 как минимум sub.unsubscribe(); вынести за скобки
    const sub: Subscription = this.usersService.allUsers
     .subscribe(users=> {
    otherBehaviorSubject.next(users.filter(/*some filter function*/));
    });
    sub.unsubscribe();
    Ответ написан
    2 комментария
  • Как сделать так чтобы в md-datepicker AngularJS не ставилась текущая дата только в firefox & IE?

    @kristenstewartdadada
    Frontend Developer
    используй для определение браузера https://github.com/lancedikson/bowser
    ну и на основе условия делай то что тебе необходимо
    Ответ написан
    2 комментария
  • Как реализовать рандомный вывод текста в Java?

    @raspier
    Java Developer
    Ответ написан
    Комментировать
  • Как дождаться окончания запроса, инициированного в другом компоненте?

    @denismaster
    Несколько вариантов навскидку.
    1) Если FooterComponent расположен рядом с AppComponent, использовать EventEmitter=)
    2) Если же футер внутри AppComponent, то просто делаете Input-свойство внутри Footer, потом просто делаете биндинг.
    3) Создать Observable на основе события "storage", которое возникает при изменении localStorage. Подробнее тут и тут. Но следует учесть, что событие возникает на других вкладках.
    Ответ написан
    Комментировать
  • Как правильно разрастаться веб приложению написанному на spring?

    @aol-nnov
    > DAO
    > контроллеры
    есть еще сервисы!
    Ответ написан
    Комментировать
  • В каких случаях использовать ООП?

    Ni55aN
    @Ni55aN
    ООП уместно использовать для тех задач, где компоненты приложения будет удобнее разделить на некоторые абстракции (сущности)

    Особенности:
    • - нет необходимости применять ООП для очень мелких программ/скриптов
    • + желательно использовать в программах, которые потребуется поддерживать и улучшать
    • + необходимо использовать в больших программах (чем больше функций должно выполнять ПО, тем сложнее будет их все правильно структурировать и реализовать)


    Например, в самом простом калькуляторе нет необходимости что-то представлять в виде объектов, достаточно функционального стиля (все что от него требуется, это методы add, sub, div, mul и т.д.)
    Если что-то посложнее, тогда с одними функциями будет сложно работать, и будет сложнее разбираться в коде (поддерживать его) и понимать какая часть кода за что отвечает (нажатие кнопки, вывод результата).
    В случае с ООП можно такие компоненты представить в виде классов, тем самым оградить нужные данные и методы от остальных (классы Button, Field, и Operation, например). Конечно, и кода станет больше, но зато потом будет легче в нем разобраться, чем перебирать все функции и места, где они выполняются.
    3 принципа ООП:
    • инкапсуляция - изолирование некоторых данных и методов от прямого внешнего воздействия
      Например, у Button есть имя, но оно не должно быть доступно как public, чтобы его не могли изменять как попало, а изменять только через метод setName, который будет контролировать что можно ставить как имя кнопки, а что нельзя

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

    • полиморфизм - позволяет работать с данными не заботясь о том, какие дополнительные свойства имеют эти данные (объект) или какого они типа
      Например, есть класс Месседжер, он имеет метод отправить(что-то). В виде параметра нужно передать то, что нужно отправить, а это может быть как текст, так и файл. Это пример статического полиморфизма (хотя в JS его трудно назвать таковым, так как он с динамической типизацией и не имеет перегрузки методов, и все разборки по поводу того, что делать с данными разного типа происходят при выполнении программы). В динамическом необходимо знать только то, что умеет делать определенный объект и не важно чем он есть на самом деле и как он это делает (см. пример с классом Транспорт выше)

    Ответ написан
    2 комментария
  • Angular 4, можно ли настроить сборку на сервере?

    @Urukhayy
    Попробуйте сборку с ожиданием изменений файлов:

    ng build -w

    Или

    ng serve -w

    После базовой сборки, процесс висит открытым и ждёт изменений в файлах проекта. Если он обнаружит малейшие изменения, он тут же, автоматически, соберёт только внесённые изменения, что гораздо быстрее, чем каждый раз собирать весь проект по новой при помощи ng build. Но бывают ситуации, когда и сборка с ожиданием (-w) собирается долго. Это касается правок, которые затрагивают подключение/отключение/изменение модулей.
    Ответ написан
    1 комментарий
  • При написании бэкэнда для андроид почему предпочтение отдает php, а не java?

    mitaichik
    @mitaichik
    PHP программисты дешевле и их легче найти. Это единственная причина. Почему? Потому что порог входа в php ниже.

    В Java порог входа выше, это факт. Но писать бэкенд на Java (когда умееш) не сложнее чем на php, имхо, даже гораздо проще.
    Ответ написан
    Комментировать
  • В каких случаях использовать ООП?

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

    Если вы:
    • пишете один
    • делаете одноразовые проекты (лендинги например)
    • никогда повторно не используете ранее написанный код

    то вам этот ООП будет только мешать.

    Если вы:
    • работаете в команде
    • пишете большой проект (приложение например)
    • вы и ваши коллеги постоянно используют куски ранее написанного кода

    то вам без ООП будет очень сложно обойтись.

    Так что всё зависит от вас. Не нужно использовать ООП только потому, что так кто-то делает. Пишите так, как удобно вам и окружающим. В конце концов главное - это простота кода и скорость разработки.
    Ответ написан
    21 комментарий
  • Динамическая или статическая линковка - что с эффективностью?

    @moh-mog-drinks
    Вам никто не мешает заранее подгружать динамически линкуемые куски кода.
    Заранее, еще до того как понадобится их фактическое использование.

    А вообще - есть такой термин "профилирование"
    Запустите профайлинг и посмотрите - а где реально у вас тормоза.

    Может быть это вовсе не на линковке (очень сомнительно, чтобы виной была линковка),
    а, скажем, при подключении к каким то внешним сервисам (БД и т.п.)
    Ответ написан
    3 комментария
  • Angular cli или quickstart?

    @coddy
    FullStack Web Developer
    Я рекомендую angular-cli.

    JS и MAP вы увидите после сборки проекта - ng build (в папке dist).
    Ответ написан
    Комментировать
  • Нужно ли удалять компонент после закрытия?

    @Urukhayy
    Если Angular 2+, может стоит попробовать *ngIf?
    Он сам скрывает DOM-содержимое.
    Ответ написан
    3 комментария
  • Как посоветуете мигрировать с VueJS на Angular4?

    ozknemoy
    @ozknemoy
    яваскриптист
    нету такой возможности. даже переход с первого ангулара на второй через их мигратор этой больше маркетинг. хотя перевод простенького сайта возможен
    Ответ написан
    Комментировать