• Почему игнорируется повторный вызов всех epic-ов при возникновении ошибки?

    @okuznetsov1 Автор вопроса
    разобрался, нашёл проблему. после того как открывался отчёт в 1-ый раз - в catch должно было прийти сообщение об ошибке, но не оно терялось при передаче, при этом данная ошибка "гасилась" браузером и он о ней не сообщал в консоли. Поэтому складывалось такое впечатление, что вроде бы всё хорошо должно работать, но по не понятным причинам "не работало"
    Ответ написан
    Комментировать
  • Как выполнить строку содержащую код (angular 4 + typescript + redux)?

    @okuznetsov1 Автор вопроса
    Два варианта решения, кому-то обязательно пригодится.

    Вариант 1

    import * as ts from 'typescript';
    import {of} from 'rxjs/observable/of';
    import {concat} from 'rxjs/observable/concat';
    
    private createTranslateChangedEpic() {
                        const g = Groups.getSelectedGroupForSelectedPerspective(storeState);
                        const reportId1 = storeState.groups[0].id;
                        const reportId2 = storeState.groups[1].id;
    
                        const code = `({
                                Run: (concat: <T>, of: <T>, actions: SummaryActivitySitesActions, reportId1, reportId2) => {
                                    console.log('run');
                                    return concat(
                                        of(actions.setPage(reportId1, {page: 1})).delay(100),
                                        of(actions.setPage(reportId2, {page: 1})).delay(100)
                                    );
                                }
                        })`;
                        const result = ts.transpile(code);
                        const runnalbe = eval(result);
    
                        return runnalbe.Run(concat, of, this.actions, reportId1, reportId2);
    }


    Вариант 2

    private createTranslateChangedEpic() {
                        const g = Groups.getSelectedGroupForSelectedPerspective(storeState);
                        const reportId1 = storeState.groups[0].id;
                        const reportId2 = storeState.groups[1].id;
    
                        const f = new Function(
                            'concat',
                            'of',
                            'actions',
                            'reportId1',
                            'reportId2',
                            `return function (concat, of, actions, reportId1, reportId2) {
                                        console.log('run');
                                        return concat(
                                            of(actions.setPage(reportId1, {page: 1})).delay(100),
                                            of(actions.setPage(reportId2, {page: 1})).delay(100)
                                        );
                            }`
                        )(concat, of, this.actions, reportId1, reportId2);
    
                        return f(concat, of, this.actions, reportId1, reportId2);
    }
    Ответ написан
    Комментировать
  • Можно ли в pipe отрендерить динамический компонент (Angular2/4)?

    @okuznetsov1 Автор вопроса
    Вот короткое решение вопроса (помогли на другом форуме), наверняка кому-то пригодится: https://plnkr.co/edit/oQ9zDzKFDQWakIB4Ithb?p=preview
    Ответ написан
    Комментировать
  • Как вычислить среднее значение между двумя временными метками?

    @okuznetsov1 Автор вопроса
    Спасибо всем за помощь, очень благодарен.

    Но реализовал своё решение (на moment.js), более красивое на мой взгляд. На всякий случай (может быть кому-то пригодится):

    var t1 = moment.duration("16:46", "HH:mm").asSeconds();
    var t2 = moment.duration("17:04", "HH:mm").asSeconds();
    var t = moment.utc( ((t1+t2)/2) * 1000 ).format("HH:mm");
    "12:55"
    Ответ написан
  • Как передавать параметры из сервиса в контроллер?

    @okuznetsov1 Автор вопроса
    в сервисе:

    function serviceDataByCommands($http) {
                
                return {
                    name: 'Commands Service',
                    add: function (vm) {
    
                        return $http.post('addData.php',{genCommand:vm.newGenerationCommand, description:vm.newDescription});     
                            
                    },
                    ...........................


    в контроллере:

    vm.addCommand = function() {

    serviceDataByCommands
    .add(vm)
    .then(function(response) {

    vm.notify('success','Команда "' + response.data[0].command + '" успешно сохранена!');

    vm.lists.push({
    id: response.data[0].id,
    command: response.data[0].command,
    description: response.data[0].description,
    completed: response.data[0].completed
    });

    })
    .catch(function(error) {
    console.log(error);
    });
    };
    Ответ написан
    Комментировать