如何在组件B中呈现组件A的一部分

Sreginogemoh

我有一个组件AB

<div class="A">
    <div class="A1"></div>
    <div class="A2"></div>
</div>

<div class="B">
    <!--want to display <div class="A1"></div> here-->
</div>

组件B不包含组件A或解决方法

<componentA></componentA>
<componentB></componentB>

我试图进行包装<div class="A1"></div>ng-template然后在其中componentB进行查询,但这始终是undefined

@ViewChild('templ') templ: TemplateRef<any>;

然后我意识到这@ViewChild是查询子组件,那么如何查询和呈现<ng-template>它不是子组件呢?

kuncevic.dev

看看Alex Rickabaugh的这张出色的sideNav示例,该演示正是您所需要的。

在此基础上,你需要定义一个ng-containerComponentA然后,您需要ComponentB使用自定义指令标记您的内容,并且有一个连接ComponentA的服务ComponentB

<div class="A1"><div>
<div class="A2" *leftNav >
  <h3>Content</h3>
</div>

指示:

@Directive({
  selector: '[leftNav]',
})
export class LeftNavDirective implements OnInit {
  constructor(private leftNav: LeftNav, private ref: TemplateRef<any>) {}

  ngOnInit(): void {
    this.leftNav.setContents(this.ref);
  }
}

服务:

@Injectable()
export class LeftNav {
  private _state = new BehaviorSubject<TemplateRef<any>|null>(null);
  readonly contents = this._state.asObservable();

  setContents(ref: TemplateRef<any>): void {
    this._state.next(ref);
  }

  clearContents(): void {
    this._state.next(null);
  }
}

最后,您ComponentB必须在以下位置订阅您的<div class="A1"> ... <div>东西ngAfterViewInit

ngAfterViewInit(): void {
    this
      .leftNav
      .contents
      .subscribe(ref => {
        if (this._current !== null) {
          this._current.destroy();
          this._current = null;
        }
        if (ref === null) {
          return;
        }
        this._current = this.vcr.createEmbeddedView(ref);
    });
  }

PS有一个关于该主题视频幻灯片

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

组件中仅呈现了一部分更新状态(React / Redux)

如何下载 React 组件的一部分?

如何在状态更改时重新渲染组件的一部分?

如何在angularJs 1.5中将$ scope变量作为组件的templateUrl的一部分传递?

如何在JavaScript中打印呈现的HTML页面的一部分?

如何在不丢失样式的情况下打印Vue组件的一部分

如何解决错误组件不是任何NgModule的一部分或未正确导入角度6中?

如何将以下时间选择实现为调度组件的一部分?

如何用React组件多次替换字符串的一部分?

如何从子组件仅更改状态的一部分反应钩子

组件是Angular中2个模块的声明的一部分

在 React.js 中:是否可以只访问子组件的一部分?

通过react JS中的函数渲染组件的一部分

使用react-native的React-navigation:如果组件的一部分不呈现DrawerIcon

从另一个组件重新渲染组件的一部分

让子组件知道它是父组件Angular的FormGroup的一部分

如何在表格的一部分中添加百分比

如何删除B中字符串的第一部分

如何在熊猫中取一列的一部分与另一列的一部分匹配?

一个组件是2个angular模块声明的一部分

在Vue.js中返回组件的输出作为方法的HTML响应的一部分

PHP中的Regex:如何在最后一部分URL中获取单词?

如何在python中将数组的一部分存储在不同的数组中

如何在Nginx中获取$ host变量的一部分?

如何在OCaml / ReasonML中获取列表的一部分?

如何在JavaScript中的“:”之前删除字符串的一部分?

如何在 CakePHP 3 中访问 GET url 的最后一部分

如何在JavaScript中获取字符串的最后一部分?

如何在python中删除网址的一部分?