Как вы получаете доступ к экземпляру компонента понижения в представлении? [Дубликат]

вы можете позаботиться о первых 3 предметах с нарезкой и головой:

  1. df[df.A>=4].head(1)
  2. df[(df.A>=4)&(df.B>=3)].head(1)
  3. df[(df.A>=4)&((df.B>=3) * (df.C>=2))].head(1)

Условие в случае, если ничего не возвращается, вы можете обрабатывать с помощью try или if, если ...

try:
    output = df[df.A>=6].head(1)
    assert len(output) == 1
except: 
    output = df.sort_values('A',ascending=False).head(1)
20
задан Claies 29 December 2016 в 18:29
поделиться

1 ответ

Это вызвано обновленной службой UpgradeModule, которую вы используете здесь:

import { UpgradeModule } from '@angular/upgrade/static';

Вы используете ее, потому что хотите, чтобы UpgradeModule понизил угловой коэффициент 2 до углового JS.

Если вы вникнете в код UpgradeModule, вы можете обнаружить, что этот модуль определяет новый угловой модуль с именем $$ UpgradeModule.

Этот модуль регистрирует поставщик значений с именем $$ angularInjector (тот, который находится в ошибка выше) - эта вещь $$ angularInjector отвечает за инъекцию угловых модулей в угловые JS.

Решение заключается в том, чтобы импортировать модуль в оператор импорта, чтобы угловой JS имел доступ к его услугам.

Вы забыли импортировать UpgradeModule. Вот ответ из официальной документации :

@NgModule({
  declarations: [Ng2HeroesComponent, Ng1HeroComponentWrapper],
  providers: [
    HeroesService,
    // Register an Angular provider whose value is the "upgraded" AngularJS service
    {provide: 'titleCase', useFactory: (i: any) => i.get('titleCase'), deps: ['$injector']}
  ],
  // All components that are to be "downgraded" must be declared as `entryComponents`
  entryComponents: [Ng2HeroesComponent],
  // We must import `UpgradeModule` to get access to the AngularJS core services
  imports: [BrowserModule, UpgradeModule]
})
class Ng2AppModule {
  ngDoBootstrap() { /* this is a placeholder to stop the boostrapper from complaining */
  }
}

, поэтому сначала вам нужно изменить свой код на:

ng2.module.ts:

import 'reflect-metadata';
import '@angular/core';

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';
import { AppComponent }  from './components/app/app.component.ts';

@NgModule({
  imports:      [ BrowserModule, UpgradeModule ],
  declarations: [ AppComponent ],
  entryComponents: [ AppComponent ]
})
export class Ng2Module { 
   ngDoBootstrap() {}
}

Также для того, чтобы понизить ваш компонент от ng2 до углового 1

Вы должны создать директиву AngularJS, которая сделает этот угловой компонент доступным внутри шаблонов AngularJS:

ng1AppModule.directive('Ng2Module', downgradeComponent({component: AppComponent}));

    function downgradeComponent(info: {   component: Type< This parameter is no longer used */   selectors?: string[]; }): any;

Существует очень полезный пост , в котором подробно объясняется, как создать гибридное угловое приложение, а также сценарий, когда у вас есть компонент v4, и вы хотите использовать его в шаблоне v1 .

16
ответ дан Tal Avissar 19 August 2018 в 01:27
поделиться
  • 1
    Вы, кажется, абсолютно правы! Я просто продолжал читать учебник. Наградит вас щедростью за 23 часа, когда она будет доступна. – Max Paymar 28 June 2017 в 15:19
Другие вопросы по тегам:

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