Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
apollo-angular
Advanced tools
The apollo-angular package is a comprehensive Angular integration for Apollo Client, which is a popular GraphQL client. It allows Angular developers to easily query, mutate, and subscribe to data from a GraphQL server, manage local state, and handle caching.
Querying Data
This feature allows you to query data from a GraphQL server. The code sample demonstrates how to define a GraphQL query, use Apollo's watchQuery method to fetch data, and bind the data to the template using Angular's async pipe.
```typescript
import { Component, OnInit } from '@angular/core';
import { Apollo, gql } from 'apollo-angular';
const GET_DATA = gql`
query GetData {
data {
id
name
}
}
`;
@Component({
selector: 'app-data',
template: `
<div *ngIf="data$ | async as data">
<div *ngFor="let item of data.data">
{{ item.name }}
</div>
</div>
`
})
export class DataComponent implements OnInit {
data$ = this.apollo.watchQuery({ query: GET_DATA }).valueChanges;
constructor(private apollo: Apollo) {}
ngOnInit() {}
}
```
Mutating Data
This feature allows you to perform mutations to modify data on the GraphQL server. The code sample shows how to define a mutation, use Apollo's mutate method to send the mutation, and handle the response.
```typescript
import { Component } from '@angular/core';
import { Apollo, gql } from 'apollo-angular';
const ADD_ITEM = gql`
mutation AddItem($name: String!) {
addItem(name: $name) {
id
name
}
}
`;
@Component({
selector: 'app-add-item',
template: `
<input [(ngModel)]="itemName" placeholder="Item name" />
<button (click)="addItem()">Add Item</button>
`
})
export class AddItemComponent {
itemName: string = '';
constructor(private apollo: Apollo) {}
addItem() {
this.apollo.mutate({
mutation: ADD_ITEM,
variables: { name: this.itemName }
}).subscribe(result => {
console.log('Item added', result);
});
}
}
```
Subscription
This feature allows you to subscribe to real-time updates from the GraphQL server. The code sample demonstrates how to define a subscription, use Apollo's subscribe method to listen for updates, and bind the data to the template.
```typescript
import { Component, OnInit } from '@angular/core';
import { Apollo, gql } from 'apollo-angular';
const NEW_ITEM_SUBSCRIPTION = gql`
subscription OnNewItem {
newItem {
id
name
}
}
`;
@Component({
selector: 'app-new-item',
template: `
<div *ngIf="newItem$ | async as newItem">
New item: {{ newItem.newItem.name }}
</div>
`
})
export class NewItemComponent implements OnInit {
newItem$ = this.apollo.subscribe({ query: NEW_ITEM_SUBSCRIPTION });
constructor(private apollo: Apollo) {}
ngOnInit() {}
}
```
urql is a highly customizable and versatile GraphQL client for React and other frameworks. It offers similar functionalities to apollo-angular, such as querying, mutating, and subscribing to data, but is designed to be more lightweight and modular.
relay-runtime is a core runtime for Relay, a GraphQL client developed by Facebook. It is designed for high-performance applications and offers advanced features like data normalization and efficient caching. While it is more complex to set up compared to apollo-angular, it provides powerful tools for managing GraphQL data.
graphql-request is a minimalistic GraphQL client for Node.js and browsers. It provides a simple API for making GraphQL queries and mutations. Unlike apollo-angular, it does not include advanced features like caching or subscriptions, making it a lightweight alternative for basic use cases.
Apollo Angular allows you to fetch data from your GraphQL server and use it in building complex and reactive UIs using the Angular framework. Apollo Angular may be used in any context that Angular may be used. In the browser, in NativeScript, or in Node.js when you want to do server-side rendering.
Apollo Angular requires no complex build setup to get up and running. As long as you have a
GraphQL server you can get started building out your application with Angular immediately. Apollo
Angular works out of the box with both Angular CLI
(ng add apollo-angular
) and NativeScript with a single install.
Apollo Angular is:
Get started today on the app you’ve been dreaming of, and let Apollo Angular take you to the moon!
It is simple to install Apollo Angular and related libraries
# installing Apollo Angular in Angular CLI
ng add apollo-angular
# installing each piece independently
yarn add @apollo/client apollo-angular graphql
That’s it! You may now use Apollo Angular in any of your Angular environments.
For an amazing developer experience you may also install the Apollo Client Developer tools for Chrome which will give you inspectability into your Apollo Angular data.
apollo-angular@v3
If you are using Apollo-Client v2, please make sure to use
apollo-angular@v1
(and for Angular 10 support, make sure to usev1.10.0
)
Now you may create components that are connected to your GraphQL API.
Finally, to demonstrate the power of Apollo Angular in building interactive UIs let us connect one
of your components to your GraphQL server using the Apollo
service:
import { Apollo, gql } from 'apollo-angular';
import { map, Observable } from 'rxjs';
import { AsyncPipe } from '@angular/common';
import { Component, OnInit } from '@angular/core';
const GET_DOGS = gql`
{
dogs {
id
breed
}
}
`;
@Component({
selector: 'dogs',
template: `
<ul>
@for (dog of dogs | async; track dog.id) {
<li>
{{ dog.breed }}
</li>
}
</ul>
`,
})
export class DogsComponent implements OnInit {
public dogs!: Observable<any>;
constructor(private readonly apollo: Apollo) {}
ngOnInit() {
this.dogs = this.apollo
.watchQuery({
query: GET_DOGS,
})
.valueChanges.pipe(map(result => result.data && result.data.dogs));
}
}
To learn more about querying with Apollo Angular be sure to start reading the documentation article on queries.
All the documentation for Apollo Angular including usage articles and helpful recipes lives on: https://www.apollo-angular.com/
Read the Apollo Contributor Guidelines.
This project uses Lerna.
Bootstrapping:
yarn install
Running tests locally:
yarn test
Formatting code with prettier:
yarn prettier
This project uses TypeScript for static typing. You can get it built into your editor with no configuration by opening this project in Visual Studio Code, an open source IDE which is available for free on all platforms.
FAQs
Use your GraphQL data in your Angular app, with the Apollo Client
The npm package apollo-angular receives a total of 125,122 weekly downloads. As such, apollo-angular popularity was classified as popular.
We found that apollo-angular demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.