Nano Hash - криптовалюты, майнинг, программирование

ionic 2 - Как получить доступ к функции компонента от родителя

У меня есть пользовательская загрузка (SearchingModalComponent), я хочу вызвать функцию show() в SearchingModalComponent.

SearchingModalComponent

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

@Component({
    selector: 'searching-modal',
    templateUrl: 'searching-modal.html'
})
export class SearchingModalComponent {
    public show_classname: any;

    constructor() {
        this.show_classname = ""
    }

    public show() {
        this.show_classname = "busy";
    }

    hide() {
        this.show_classname = "";
    }
}

app.modules.ts

import { SearchingModalComponent } from '../components/searching-modal/searching-modal';

@NgModule({
    declarations: [
        MyApp,
        HomePage,
        ScanPage,
        SearchingModalComponent
    ],
    imports: [
        IonicModule.forRoot(MyApp)
    ],
    bootstrap: [IonicApp],
    entryComponents: [
        MyApp,
        HomePage,
        ScanPage
    ],
    providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, [ScreenSaver]]
})
export class AppModule {}

app.component.ts

@Component({
    template: `
        <ion-nav [root]="rootPage"></ion-nav>
        <searching-modal id="loading" #Searching></searching-modal>
    `
})

корневая страница

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { SearchingModalComponent } from '../../components/searching-modal/searching-modal';

@Component({
    selector: 'page-scan',
    templateUrl: 'scan.html'
})
export class ScanPage {

    constructor(public navCtrl: NavController
    , public ScreenSaverPrivid: ScreenSaver
    , public SearchingModal: SearchingModalComponent
    ) { }

    openLoading() {
        this.SearchingModal.show();
        console.log('openLoading');
    }
}

системная информация:

  • Интерфейс командной строки Кордовы: 6.0.0
  • Версия Ionic Framework: 2.0.0-rc.3
  • Ионная версия интерфейса командной строки: 2.1.14
  • Ionic App Lib Версия: 2.1.7
  • Ионные сценарии приложений Версия: 0.0.46
  • версия ios-deploy: не установлена
  • версия ios-sim: не установлена
  • ОС: Виндовс 10
  • Версия узла: v6.9.1
  • Версия Xcode: не установлена

ИЗМЕНИТЬ [Решено] Спасибо, Хадриен ТОМА

переместите <searching-modal id="loading" #Searching></searching-modal>
в файл scan.html


Ответы:


1

Вам просто нужно использовать ViewChild и поместить ссылку на вашего ребенка в родительский шаблон (как вы уже сделали), здесь вы можете увидеть простой пример того, как это сделать.

EDIT: добавление советов

Кроме того, вы должны вызвать @ViewChild в компоненте относительно шаблона, на который есть ссылка, в вашем случае у вас есть два варианта: переместить <searching-modal id="loading" #Searching></searching-modal> в scan.html или переместить openLoading(){...} и @ViewChild(...)... в app.component.ts. Первый вариант для меня самый лучший.

03.12.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..