zoukankan      html  css  js  c++  java
  • angular的组件传值

    angular组件传值存在三种情况,分别是父传子 ,子传父,以及非父子之间进行传值

    1.父传子

    通过在子组件上绑定属性或者方法,在子组件xxx.componet.ts中 导入Input类, 进行接收,可以获取父组件传过来的内容

    父组件.html

    <app-home [msg] = 'msg' [run]='logApp' [home]='this'></app-home>
    // msg是数据  logApp是方法名   this是这个组件的对象

    子组件.component.ts

    import {Input} from '@angular/core';
    ---------------------------------------------------
    @input() msg:string;
    @input() run:any;
    @input() home:home;
    // 使用的时候用this进行调用
    

      

    2.子传父

    1.Output & eventEmitter

    通过引入Output 和eventEmitter 可以设置自定义事件 从而使父组件

    第一步 在子组件中引入Output 以及 eventEmitter

    import { Component, OnInit, Output,EventEmitter } from '@angular/core';

    第二步

    @Output private outer = new EventEmitter()

    第三步,定义一个方法 在方法中通过emit 调用父组件的方法

    setData(){
        this.outer.emit('是嘛')
      }

    第四步, 在父组件中的标签上设置事件

    // html
    <app-foot (outer)="getData($event)"></app-foot>
    // ts
    getData(msg:string){
        console.log(msg);
      }

    注意点: 在父组件.html中绑定方法的时候 方法名必须和子组件.component.ts中 通过 new eventEmitter()实例出的对象一致, 不然就会出现错误

    2.viewChild

    在父组件.html 给子组件标签绑定上 #xxx 通过@viewChild 获取子组件的对象 就可以获取子组件的数据以及调用子组件的方法

    // .html  绑定#xxx属性
    <app-news #newsChild></app-news>
    // component.ts
    import { ViewChild } from '@angular/core';
    ​
    -----------------------
    // 获取到news对象 就是组件
    @viewChild('newsChild') news
    ​

    在方法中 this.news就是可以获取这个对象实例

    3.非父子之间的传值

    1.service 通过服务可以进行传值

    2.本地存储 localStorage sessionStorage

     

  • 相关阅读:
    VS自带的dbghelp.h文件 报错
    Windows 自带的截屏功能
    CentOS 7 安装
    Windows 远程连接 CentOS 7 图形化桌面
    <<、|=、&的小例子
    pip 安装库过慢
    pip -i 和 -U 参数
    windows下安装TA-Lib库
    vector、map 判断某元素是否存在、查找指定元素
    vector push_back报错
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/14338262.html
Copyright © 2011-2022 走看看