Это очень сложная проблема. Вот подробные сведения о совместимости, поэтому кто-то другой может потратить меньше времени на поиск и попытку.
sqlsrv существует в двух (+ неофициальных) версиях, они совместимы только с 32-битным PHP. В настоящее время нет версии для 64-битного PHP.
Другой способ доступа к SQL Server 2000 с PHP 5.4 - через расширение odbc. Можно подключиться с помощью трех драйверов ODBC для SQL Server 2000:
Код для подключения для каждого из этих драйверов ODBC:
$connection_string = 'DRIVER={SQL Server};SERVER=mbsql;DATABASE=vg1';
$connection_string = 'DRIVER={SQL Native Client};SERVER=mbsql;DATABASE=vg1';
$connection_string = 'DRIVER={SQL Server Native Client 10.0};SERVER=mbsql;DATABASE=vg1';
$connection = odbc_connect( $connection_string, $user, $pass );
Эти соединения работают с PHP 32-битным и 64-битным. Я еще не тестировал, какой из них лучший.
В вашем сервисе заголовков, возможно, рассмотрите возможность использования Subject
из rxjs, а затем создайте метод, который обновляет значение этого Субъекта в сервисе ex
// header.service.ts
selectedRecipe: Subject<any> = new Subject();
chooseRecipe(recipe: string) {
this.selectedRecipe.next(recipe);
}
// header.component.ts
yourClickMethod(recipe: string) {
this.heservice.chooseRecipe(recipe);
}
your app component logic would stay the same, the subscribe will work the same way.
Если вы используете Angular v6 или выше, вы можете зарегистрировать сервис с корневым инжектором Angular, используя этот синтаксис:
import { EventEmitter } from '@angular/core';
@Injectable({providedIn: 'root'})
export class Headerrecipe{
stringselected = new EventEmitter<string>()
}
Тогда услуга не должна быть включена в массиве providers
любого модуля или компонента.
Регистрация службы таким способом регистрирует ее с корневым угловым инжектором, который предоставляет общий экземпляр. Таким образом, вы можете использовать эту технику для обмена данными между любыми компонентами приложения.