Как сделать константу строки в angular 4?
В моем сервисе я использую сообщение http
. Я хочу установить URL как константу.
return this.http.get(this.config.API_URL+'users', options).map(res=>res.json());
Я попробовал со службой:
import {Injectable} from '@angular/core';
@Injectable()
export class AppService {
API_URL :String;
constructor() {
this.API_URL = 'some url';
}
}
Есть ли другой способ сделать постоянное значение в Angular4?
Ответы
Ответ 1
Я не уверен, понимаю ли я ваш вопрос, но если вы хотите создать константы, вы можете сделать это в другом классе и импортировать его.
constants.ts
export class Constants {
public static get HOME_URL(): string { return "sample/url/"; };
}
sample.component.ts
import { Constants } from "./constants";
@Component({
})
export class SampleComponent {
constructor() {
let url = Constants.HOME_URL;
}
}
Ответ 2
Вы можете просто экспортировать константу с помощью модулей es6/ typescript, если это все, что вам нужно:
constants.ts:
export const API_URL: string = 'api/url';
И импортируйте, где необходимо:
import { API_URL } from './constants.ts';
...
return this.http.get(API_URL+'users', options)
.map(res=>res.json());
или если у вас много констант, вы можете импортировать их все:
import * as constants from './constants.ts';
...
return this.http.get(constants.API_URL+'users', options)
.map(res=>res.json());
Если вы хотите настроить константы для каждого приложения при запуске, вы можете использовать поставщиков. Посмотрите верхний ответ по этой ссылке: как мне получить инъекцию зависимостей angular2 для работы с поставщиками стоимости.
Ответ 3
Определите константу приложения как общедоступную статическую только для чтения, как показано ниже
public static readonly constName = 'Значение Consts'
/app-constants.ts
export class Constants {
public static readonly routeAuthRegister = '/auth/register';
public static readonly routeAuthLogin = '/auth/login';
public static readonly routeAuthRecovery = '/auth/forgot-password';
}
/api-constants.ts
Лучше хранить базовый URI в файлах конверсии. и определите свою среду в приложениях в .angular-cli.json. я здесь прикрепил снимок экрана ниже для определения пользовательских сред приложений.
import { environment } from '../../environments/environment';
export class ApiURIs {
public static readonly apiURL: string = environment.apiEndpoint;
public static readonly apiV1: string = environment.apiEndpoint + '/v1';
public static readonly apiV2: string = environment.apiEndpoint + '/v2';
public static readonly login: string = ApiEndpoints.apiV1 + '/login';
public static readonly register: string = ApiEndpoints.apiV1 + '/register';
public static readonly signup: string = ApiEndpoints.apiV2 + '/register';
}
Использование констант
/core/auth.service.ts
import { ApiURIs } from './api-constants';
@Injectable()
export class AuthService {
.....
signUpUser(data) {
return this.https.post('${ApiURIs.signup}', data);
}
.....
}
/auth/login.component.ts
export class LoginComponent implements OnInit {
.....
navigateToForgotPassowrd() {
this.router.navigate([Constants.routeAuthRecovery]);
}
......
}
Определите свой другой URI API для другой среды
![environments file & .angular-cli.json]()