import { tap } from 'rxjs/operators';
return this.http.post('/login', user, {observe: 'response', responseType: 'text'}).pipe(
tap(response => {
location.href = response.url;
})
);
// Да, сначала мы делаем map, потому что он делается полюбому:
let doSomething$ = this.myApi.getSomething(id).pipe(
map(tags => ({ ...updatedShop, tags }))
)
// А затем мы делаем mergeMap если понадобится:
if (shop.isNew) {
doSomething$ = doSomething$.pipe(
mergeMap(() =>
this.myApi.addTags(updatedShop.id, shop.tags).pipe(
map(() => {
return {
...updatedShop,
tags: shop.tags
};
})
)
)
)
}
// ну и затем подписываемся на это дело чтоб оно начало работать:
doSomething$.subscribe();
this.myApi.getSomething(id).pipe(
map(tags => ({ ...updatedShop, tags })),
mergeMap((tags) => {
if (!shop.isNew) {
return of(tags);
}
return this.myApi.addTags(updatedShop.id, shop.tags).pipe(
map(() => {
return {
...updatedShop,
tags: shop.tags
};
})
)
}),
)
// human-friendly-concat.js
angular.module('yourModule', [])
.filter('humanFriendlyConcat', function() {
return function(input) {
input = input || [];
if (input.length === 0) {
return 'does not exist';
}
if (input.length === 1) {
return input[0];
}
if (input.length === 2) {
return input.join(' and ');
}
return input.slice(0, -1).join(', ') + ', and ' + input.slice(-1);
};
})
// template.html
<p>
This name <span ng-bind="name | humanFriendlyConcat"></span>.
</p>
$scope.manufacturers = angular.copy(manufacturers);
$scope.datadilers = angular.copy(datadiler);
// get-data-response.ts
export function getDataResponse<T>(response: IResponse<T>) {
if (response && response.data) {
return response.data;
} else {
return null;
}
}
import {
HttpRequest,
HttpEvent,
HttpHandler,
HttpInterceptor,
HTTP_INTERCEPTORS
} from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { messages } from 'src/fake-backend/data/messages/messages';
import { of } from 'rxjs/observable/of';
@Injectable()
export class FakeBackendInterceptor implements HttpInterceptor {
constructor() { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('HTTP REQUEST INTERCEPTED BY THE MOCKED BACKEND');
return of(new HttpResponse({body: {data: messages}}));
}
}
api.clients.allCompany("", function($scope, response) {
console.log(response.data);
$scope.clientsCompany = response.data;
});
api.clients.allCompany("", function(_, response) {
console.log(response.data);
$scope.clientsCompany = response.data;
});
ангуляр не предоставляет никаких средств для менеджмента состояния и попытки запихнуть состояние системы в переменную сервиса (это первое к чему приходят почти все разработчики на ангуляре) обычно заканчивается непредсказуемым поведением системы по мере её разрастания и невозможностью переиспользовать компоненты.