Есть ли проблема в моем коде? Мне нужно передать «строку», выбранную в компоненте Header, в компонент приложения с помощью методов служб, используемых в Angular.

Это очень сложная проблема. Вот подробные сведения о совместимости, поэтому кто-то другой может потратить меньше времени на поиск и попытку.

PHP extension sqlsrv из Microsoft

sqlsrv существует в двух (+ неофициальных) версиях, они совместимы только с 32-битным PHP. В настоящее время нет версии для 64-битного PHP.

  • sqlsrv версия 2.0 совместима с PHP 5.2.4 до 5.3.x и SQL Native client 2008 R2 для подключения к Microsoft SQL Server 2000, 2005 , или 2008.
  • sqlsrv версия 3.0 совместима с PHP 5.3.0 до 5.4.x и SQL Native client 2012 для подключения к Microsoft SQL Server 2005, 2008, 2008 R2 и SQL Server 2012.
  • официальная версия в настоящее время не поддерживает PHP 5.5
  • Существует некоторая неофициальная версия SQLSRV 3.0 для gp2 на Rob Area , которая не требует SQL Native client 2012, но должна работать с предыдущими Собственные клиенты SQL. Я еще не пытался это сделать.

Расширение ODBC для PHP

Другой способ доступа к SQL Server 2000 с PHP 5.4 - через расширение odbc. Можно подключиться с помощью трех драйверов ODBC для SQL Server 2000:

  • Клиент SQL Server ODBC версии 6.00, который поставляется с предустановленной Windows 2008 R2
  • Собственный клиент SQL Server 9.0 ( SQL Server 2005)
  • Собственный клиент SQL Server 10.0 (пакет функций SQL Server 2008 R2)

Код для подключения для каждого из этих драйверов 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-битным. Я еще не тестировал, какой из них лучший.

-1
задан R. Richards 16 January 2019 в 22:46
поделиться

2 ответа

В вашем сервисе заголовков, возможно, рассмотрите возможность использования 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.

0
ответ дан Arron McCrory 16 January 2019 в 22:46
поделиться

Если вы используете Angular v6 или выше, вы можете зарегистрировать сервис с корневым инжектором Angular, используя этот синтаксис:

import { EventEmitter } from '@angular/core';

@Injectable({providedIn: 'root'})
export class Headerrecipe{

  stringselected = new EventEmitter<string>()
}

Тогда услуга не должна быть включена в массиве providers любого модуля или компонента.

Регистрация службы таким способом регистрирует ее с корневым угловым инжектором, который предоставляет общий экземпляр. Таким образом, вы можете использовать эту технику для обмена данными между любыми компонентами приложения.

0
ответ дан DeborahK 16 January 2019 в 22:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: