angular-react-demo

1.0.0 • Public • Published

react-angular

Access your Angular application from within React.

Installation

npm install angular-react react prop-types react-dom

Simple component example

A typical React component receiving props

import 'ngReact'
import angular from 'angular'
import {registerReactComponent} from 'react-angular'
 
const app = angular.module('your-project.react', ['react'])
 
function ExampleReactComponent (props) {
  return (
    <div>
      The value is: {props.value}
    </div>
  )
}
 
registerReactComponent(app, 'exampleReactComponent', ExampleReactComponent)
<example-react-component value="'Hello World'"></example-react-component>

Nesting Angular

import 'ngReact'
import angular from 'angular'
import {
  registerReactComponent,
  reactify
} from 'react-angular'
 
const app = angular.module('your-project.react', ['react'])
 
app.component('exampleAngularComponent', {template: 'Angular inside React'})
const ExampleAngularComponent = reactify('exampleAngularComponent')
 
function ExampleReactComponent () {
  return (
    <div>
      React rending Angular
      <ExampleAngularComponent />
    </div>
  )
}
 
registerReactComponent(app, 'exampleReactNestingAngular', ExampleReactComponent)
<example-react-nesting-angular>

Complex component example

A React component that depends on Angular services.

Assume a Counter service exists and the React component requires it

import {
  registerReactComponent,
  compose,
  $inject,
  $resolve
} from 'react-angular';
 
const app = angular.module('your-project.react', ['react'])
 
// Define the component dependencies (resolves, services, etc)
const connect = compose(
  // Inject angular services,
  $inject('Counter'),
 
  // Define data resolvers
  $resolve({
    // Resolve the current count and observe changes.
    count: $resolve.watch(['Counter', Counter => Counter.getCount()]),
    // Resolve the count upon component mount without watching changes
    originalCount: ['Counter', Counter => Counter.getCount()]
  })
)
 
// Your React component
function ReactConter ({Counter, count, originalCount}) {
  return (
    <div>
      <p>Count direction from CounterService: {Counter.getCount()}</p>
      <p>Count from resolve: {count}</p>
      <p>Original count (without watchers) from resolve: {originalCount}</p>
      <button onClick={() => Counter.increment()}>+</button>
      <button onClick={() => Counter.decrement()}>-</button>
    </div>
  )
}
 
// Register the component to be available in Angular
registerReactComponent(app, 'reactCounter', connect(ReactCounter))
<react-counter></react-counter>

Readme

Keywords

none

Package Sidebar

Install

npm i angular-react-demo

Weekly Downloads

1

Version

1.0.0

License

ISC

Unpacked Size

20.7 MB

Total Files

37

Last publish

Collaborators

  • atticoos