Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to access Angular2 component specific data in console?

Is there any way to access Angular2 specific component specific data in console, for debugging purpose?

Like Angular1 has capability to access its components value in console.

like image 616
Pankaj Parkar Avatar asked Feb 05 '16 21:02

Pankaj Parkar


People also ask

How do you access $scope in console?

The debugger allows you to access the currently selected element in the console as $0 variable. To retrieve the associated scope in console execute: angular. element($0). scope()

How do I access Angular console?

You can also use Angular Console to run tasks. Click on the terminal icon in the left toolbar to get started. You'll see a list of package. json scripts, as well as tasks related to the main project and the e2e project.

How do you pass data from one component to another in Angular on button click?

This can be done via input binding, which passes data from one component to another, generally from parent to child. This custom input binding is created by using the @Input() decorator.


2 Answers

update 4.0.0

StackBlitz example

update RC.1

Plunker example In the browser console on the top-left (filter symbol) select plunkerPreviewTarget (or launch the demo app in its own window) then enter for example

Select a component in the DOM node and execute in the console

ng.probe($0); 

or for IE - thanks to Kris Hollenbeck (see comments)

ng.probe(document.getElementById('myComponentId')).componentInstance 

Alternative

Hint: enabling debug tools overrides ng.probe()

Enable debug tools like:

import {enableDebugTools} from '@angular/platform-browser';  bootstrap(App, []).then(appRef => enableDebugTools(appRef)) 

Use above Plunker example and in the console execute for example:

  • ng.profiler.appRef
  • ng.profiler.appRef._rootComponents[0].instance
  • ng.profiler.appRef._rootComponents[0].hostView.internalView
  • ng.profiler.appRef._rootComponents[0].hostView.internalView.viewChildren[0].viewChildren

I haven't found a way yet to investigate the Bar directive.

A better debug experience is provided by Augury which builds on this API

  • https://augury.angular.io/
  • https://www.youtube.com/watch?v=b1YV9vJKXEA

original (beta)

Here is a summary how to do that https://github.com/angular/angular/blob/master/TOOLS_JS.md (dead link and I haven't found a replacement).

Enabling debug tools

By default the debug tools are disabled. You can enable debug tools as follows:

import {enableDebugTools} from 'angular2/platform/browser';  bootstrap(Application).then((appRef) => {   enableDebugTools(appRef); }); 

Using debug tools

In the browser open the developer console (Ctrl + Shift + j in Chrome). The top level object is called ng and contains more specific tools inside it.

Example:

ng.profiler.timeChangeDetection(); 

See also

  • Angular 2: How enable debugging in angular2 from browser console
like image 109
Günter Zöchbauer Avatar answered Oct 01 '22 07:10

Günter Zöchbauer


First select the element using chrome 'inspect element' and run below method in chrome 'developer console'.

ng.probe($0).componentInstance 

You could also use a css selector as shown below.

ng.probe($$('.image-picker')[0]).componentInstance 

If you do it often, to make it little easier, have a global shortcut created as below. Now select any DOM element inside the component using 'inspect element' and invoke 'e()' from console

window['e'] = () => eval('ng.probe($0).componentInstance'); 
like image 31
Anoop Isaac Avatar answered Oct 01 '22 08:10

Anoop Isaac